Зависание интерфейса программы при восстановлении из минимизированного состояния - PullRequest
0 голосов
/ 14 февраля 2011

Что может вызвать «зависание» интерфейса программы, когда пользователь восстанавливает его или через некоторое время просто заходит на компьютер или получает доступ к компьютеру, на котором программа запускается с одним и тем же пользователем удаленного рабочего стола дважды ? ..Программа не зависает (процесс отвечает), но интерфейс перестает отвечать на запросы. Пользователь может свернуть / развернуть его, но не может работать с его содержимым. Я сам не могу даже воспроизвести такое зависание при отладке программы. Но все клиенты время от времени сообщают об этом во всех программах, которые я написал.
Может быть, это вина некоторых сторонних DLL, которые мы используем? .. Во всех моих программах, которые я использовал: Devexpress (grid, report, mdimanager), NLog, Stimulsoft Reports (reports). Для открытия новых вкладок в mdimanager я обычно использую BackgroundWorker, но я не думаю, что это какая-то его проблема с синхронизацией, потому что она появляется спонтанно и не выдает никаких исключений; просто зависание интерфейса и все.
Может быть, мой вопрос глуп, но я не могу найти какую-либо информацию о такой ошибке или просто не могу правильно описать ее в поисковом запросе.
Буду благодарен за любую помощь или предложения.

1 Ответ

0 голосов
/ 14 февраля 2011

Трудно сказать код, но, исходя из поведения, это звучит как проблема с многопоточностью в коде пользовательского интерфейса. Что-то вызывает его в тупик. Вы обновляете пользовательский интерфейс из фонового рабочего при его восстановлении. Если вы обновляете пользовательский интерфейс из другого потока, вы должны использовать метод Invoke. Вы не можете обновить поток пользовательского интерфейса из другого потока.

...