C # .NET: графический элемент управления останавливает мое приложение после разблокировки рабочей станции - PullRequest
3 голосов
/ 24 марта 2010

У меня есть многопоточный графический элемент управления.

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

Даже странно, эта ошибка возникает только тогда, когда я не запускаю приложение из Visual Studio и не присоединяюсь к нему.

Кто-нибудь знает, что происходит?

Например, если я присоединяю Visual Studio к уже замороженному приложению, могу ли я увидеть, какие строки кода выполняются моими потоками?

Любая помощь будет оценена!

Ответы [ 2 ]

1 голос
/ 01 апреля 2010

У нас недавно была (примерно полтора года;) такая же проблема. Это также срабатывает иногда, когда IE сбрасывает кеш, когда вы меняете цвета вашей темы. и т.д.

Проблема была в том, что у нас был экран-заставка, в котором его окно было создано в одном потоке, а затем оно было показано (ShowDialog()) в другом потоке. Как только мы переместили создание окна в тот же поток, который фактически показывает его, оно возобновилось. Также были внесены некоторые изменения в .Dispose (): ng всплывающее окно, и они могли также иметь эффект.

У Microsoft есть статья об этом, и они в основном предлагают запустить свою программу Spy ++ и посмотреть на вашу программу, когда она зависла . Есть окно «Windows», найдите ваше приложение и найдите все окна, которых там быть не должно. Возможно, они имеют включенный / подключенный насос сообщений Windows, но он не работает. Сообщение «изменение» не обрабатывается, и все окна .NET останавливаются -> зависают.

0 голосов
/ 26 марта 2010

просто присоедините VS к замороженному приложению и нажмите кнопку Пауза, VS покажет исполняемый код.

...