2

我正在处理的 Windows 窗体订阅Microsoft.Win32.SystemEvents.PowerModeChanged并在Suspend其上运行Close()窗体上的方法。在Resume它上面运行Run()函数,就像在初始加载时一样。问题是,当计算机从睡眠模式唤醒时,PowerModeChanged 事件在名为“.Net SystemEvents”的工作线程上触发,当Run()被调用时,它会在该工作线程而不是主线程上重新创建表单。

这个表单是我从另一个开发人员那里继承的一个项目,我是 Windows 表单编程的新手。我想知道是否有更好的方法来处理睡眠/唤醒过程,而不是关闭表单并在唤醒时重新创建它们,或者强制创建到主线程上。注意:如果我删除代码并让它在计算机休眠(挂起)时什么也不做,而在它唤醒(恢复)时什么也不做,那么程序将继续正常工作(在主线程上运行)。任何帮助将不胜感激。谢谢大家。

4

1 回答 1

4

在静态字段中捕获 UI 线程 SynchronizationContext,并Post()在其上返回 UI 线程。

于 2012-05-15T21:19:42.167 回答