Режим сна (приостановка) и возобновления Windows запускает программу в рабочем потоке вместо основного потока
Форма окна, над которой я работаю, подписывается Microsoft.Win32.SystemEvents.PowerModeChanged
и на Suspend
он управляет Close()
метод в форме. На Resume
он управляет Run()
функционировать как при начальной загрузке. Проблема заключается в том, что когда компьютер выходит из спящего режима, событие PowerModeChanged запускается в рабочем потоке с именем ".Net SystemEvents", и когда Run()
называется он воссоздает форму в этом рабочем потоке вместо основного потока.
Эта форма является проектом, который я унаследовал от другого разработчика, и я новичок в программировании форм Windows. Мне интересно, есть ли лучший способ обработать процесс сна / бодрствования, а не закрывать формы и воссоздавать их при пробуждении или способ принудительно создать создание в главном потоке. Примечание. Если я удаляю код и ничего не делаю, когда компьютер спит (зависает), и ничего, когда он просыпается (возобновляет работу), тогда программа продолжает работать правильно (работает в главном потоке). Любая помощь будет оценена. Спасибо всем.
1 ответ
Захватите поток пользовательского интерфейса SynchronizationContext в статическом поле и Post()
на нем, чтобы вернуться к потоку пользовательского интерфейса.