Application.DoEvents在WinForm中

时间:2014-04-12 04:03:11

标签: c# winforms

Application.DoEvents()可以成为一个可行的解决方案吗?在主窗口线程上处理密集的表单?

1 个答案:

答案 0 :(得分:6)

  

Application.DoEvents()可以成为一个可行的解决方案,其中包含表单   主窗口线程上的处理是否密集?

永远不会。您可以禁用UI以防止重新入侵,但这将是一个非常用户不友好的步骤,因为用户无法取消操作或关闭应用程序。以下是对其影响的一个很好的解释:"Keeping your UI Responsive and the Dangers of Application.DoEvents"

Here您可以找到一个示例,说明如何将CPU密集型工作卸载到池线程,并提供进度更新和取消支持。

有些情况下,您必须在进行处理时保持相同的线程。例如,您可能正在为编辑器控件编写一些实时语法高亮或拼写检查逻辑。

对于这种情况,您可以使用计时器事件,空闲事件和/或async/await构建逻辑。 Thisthis会相关。