Application.DoEvents()
可以成为一个可行的解决方案吗?在主窗口线程上处理密集的表单?
答案 0 :(得分:6)
Application.DoEvents()可以成为一个可行的解决方案,其中包含表单 主窗口线程上的处理是否密集?
永远不会。您可以禁用UI以防止重新入侵,但这将是一个非常用户不友好的步骤,因为用户无法取消操作或关闭应用程序。以下是对其影响的一个很好的解释:"Keeping your UI Responsive and the Dangers of Application.DoEvents"。
Here您可以找到一个示例,说明如何将CPU密集型工作卸载到池线程,并提供进度更新和取消支持。
有些情况下,您必须在进行处理时保持相同的线程。例如,您可能正在为编辑器控件编写一些实时语法高亮或拼写检查逻辑。