Приложение WinForms перестает отвечать на запросы - PullRequest
3 голосов
/ 19 марта 2012

Мы создаем приложение на основе WinForms (с использованием .NET 3.5)

Недавно я столкнулся с тем, что при выполнении одного из основных рабочих процессов нашего приложения приложение перестает отвечать на запросы в течение нескольких секунд, если не удается правильно отобразить пользовательский интерфейс (показывает сообщение «Программа не отвечает»).

Мы уменьшили проблему до предполагаемой строки кода, которая добавляет всплывающую подсказку к элементу управления меткой:

ToolTip tooltip = new ToolTip();
tooltip.SetTooltip(label, "something");

Последние 2 дня я потратил на выяснение того, что в этом коде могло бы кодировать любые проблемы с потоком пользовательского интерфейса, но не смог этого сделать.

У меня вопрос: возможно ли использовать профилировщик производительности для сбора информации о таком коде? Обратите внимание, что класс ToolTip принадлежит WinForms, и у меня нет исходного кода для него.

Удаление этих строк, кажется, полностью решает проблему. Я хотел бы сократить усилия по отладке в будущем, поскольку эта проблема может проявиться в других местах нашей кодовой базы.

EDIT: Единственная похожая проблема, о которой я узнал, была следующая: WinForm ToolTip.SetToolTip зависает в моем приложении: (

Ответы [ 2 ]

0 голосов
/ 16 апреля 2012

У меня та же проблема, за исключением того, что я использую объект ToolTip, размещенный с помощью конструктора, а затем в всплывающем событии ToolTip я задаю текст для всплывающей подсказки.

Проблема возникает только в 64-битной Windows 7 (у меня нет возможности проверить 32-битную Win7), в 32-битной Windows XP это работает нормально.

edit: я думаю, что был некоторый повторяющийся вызов всплывающего события, потому что, когда я переместил настройку tolltip в другое место моего кода, он работает нормально.

0 голосов
/ 19 марта 2012

Вы можете использовать программу, такую ​​как JetBrains DotTrace , чтобы увидеть, что происходит, что на самом деле приводит к остановке программы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...