У меня есть приложение, которое примерно через час использования начинает замедляться. В течение прошлой недели я проверил наличие утечек памяти и других подобных «временных оснований».Ухудшается ли производительность TextBox.Clear() со временем?
Я, наконец, подключил новую трассировку TimeLine, которая является профилировщиком dotTrace. Это показало мне, что большую часть времени было в методе TextBox.Clear()
(около 3 секунд моей общей 5-секундной задержки).
Я прочитал и нашел это post, говоря, что TextBox.Clear()
в 42 раза медленнее, чем значение TextBox для пустой строки.
Но это не отвечает, почему мое приложение только замедляется после часа использования.
Я посмотрел на метод TextBox.Clear()
, и, похоже, он обрабатывает содержимое больше как окно редактирования (с разделами текста).
Могут ли повторные вызовы Clear создавать растущий список объектов в текстовом поле?
Или у кого-нибудь еще есть идея, почему это замедлится в течение часа повторных звонков до TextBox.Clear()
?
UPDATE:
Я только что нашел этот post, что, кажется, указывает, что текстовое поле имеет стек отката, который не имеет предела. Возможно, мои вызовы для очистки делают добавление значений к этому стеку медленнее с течением времени.
UPDATE 2:
я сделать небольшой тест приложение, которое будет очистить текстовое поле 1500 раз при нажатии кнопки. Я нажал его примерно 30 раз. Около 70% из них заняло около 45 мс. Но остальные 30% потребовали 1,8 и 5,4 SECONDS!
Я понятия не имею, почему у него будет такой драматический сдвиг во времени. Тем не менее, мое приложение может иметь 2000 ясных вызовов в течение всего часа, так что это не похоже, что это доказательство того, почему Profiler говорит, что проблема TextBox.Clear()
.
Этот стек для всех элементов управления или каждого элемента управления имеет свой собственный стек? – SharpCode
Так вы попробовали сыграть с лимитом отмены на этом контроле? –
@SharpCode - Есть два стека, каждый из которых выполняет итерацию через 3 элемента управления. Поэтому каждый элемент управления очищается дважды. – Vaccano