Gur*_*epS 1 .net c# backgroundworker doevents message-loop
我有一个winforms应用程序,它调用Application.DoEvents().现在,应用程序在调用此方法时会冻结(毫不奇怪).
但是,这只发生在某些机器上.公平地说,这可能是由于机器本身还是仍然是代码/ application.doevents()?在这种情况下,应该重构使用backgroundworker.
这会是机器/环境问题还是使用背景工作者的机会?
如果可以,请使用后台工作人员.DoEvents是一个'hack',允许你的应用程序保持响应,并且主要处理WM_PAINT消息,当它正在执行它实际上永远不会做的事情时:在主GUI循环中的消息处理期间阻止执行超过一段合理的时间.如果DoEvents导致挂起而不是修复它,则会有太多消息花费太多系统功率.将它们分配给后台工作人员,以便立即修复所有这些工作 - 否则"某些机器"成为"大多数机器"只是时间问题.