休眠(挂起)和恢复Windows窗体在辅助线程而不是主线程上启动程序 [英] Sleep(suspend) and Resuming windows form starts program on worker thread instead of main thread

查看:15
本文介绍了休眠(挂起)和恢复Windows窗体在辅助线程而不是主线程上启动程序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

推荐答案

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

这篇关于休眠(挂起)和恢复Windows窗体在辅助线程而不是主线程上启动程序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆