Как узнать, что держит интерфейс?
От: dims12 http://www.relativity.ru
Дата: 24.09.10 12:45
Оценка:
Мое Windows Forms приложение запускает с десяток потоков, состояние работы которых отображается в списке на форме.

Отображение происходит так: каждый поток знает ссылку на форму и вызывает для неё Invoke, куда передаёт делегат функции обновления контрола.

Когда я запускаю программу, я вожу мышкой окно и наблюдаю, что оно "застревает" в своём движении. Значит -- что-то подвешивает GUI.

Сама функция обновления очень коротенькая -- просто обновляет строку и сразу возвращается. Кроме того, я отключал это обновление -- застревание продолжалось. Зато, когда я убирал из потока все операции с файлами, застревание исчезало, хотя и производилось обновление данных.

В общем, различными проверками я пришёл к выводу, что задерживает работу не мой код. Такое впечатление, что в библиотеке есть "бутылочные горлышки", то есть, методы, при запуске которых, выполнение основного потока приостанавливается.

Вот и вопрос: какими техническими средствами можно их найти?



27.09.10 11:56: Перенесено из '.NET'
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.