.net 如何使用BeginInvoke或类似工具在UI线程上执行串行操作
我有一个看似简单的问题,但我不知道如何解决它 我想做的是在工作线程上执行一个从UI线程调用的长时间操作,以便UI保持响应-但是这仍然必须是顺序的,我想等待操作完成,但仍然会泵送消息队列,以便UI不会收到可怕的不响应。。。错误.net 如何使用BeginInvoke或类似工具在UI线程上执行串行操作,.net,multithreading,freeze,begininvoke,.net,Multithreading,Freeze,Begininvoke,我有一个看似简单的问题,但我不知道如何解决它 我想做的是在工作线程上执行一个从UI线程调用的长时间操作,以便UI保持响应-但是这仍然必须是顺序的,我想等待操作完成,但仍然会泵送消息队列,以便UI不会收到可怕的不响应。。。错误 以一种优雅的方式,丑陋而邪恶的方式是产生一个线程并进入DoEvents循环,直到它完成。你所要求的是矛盾的。您希望UI执行时具有响应性,但不希望它执行代码并等待操作完成 您可以显示一个阻止用户与主界面交互的模式视觉元素,也可以在后台任务完成时禁用所有相关的视觉元素和导航。请
以一种优雅的方式,丑陋而邪恶的方式是产生一个线程并进入DoEvents循环,直到它完成。你所要求的是矛盾的。您希望UI执行时具有响应性,但不希望它执行代码并等待操作完成
您可以显示一个阻止用户与主界面交互的模式视觉元素,也可以在后台任务完成时禁用所有相关的视觉元素和导航。请为此添加一个语言标记。我真正想要的是UI不冻结,我希望它仍然绘制,为了在动作完成时显示沙漏,我实际上不希望用户能够与UI交互,除了移动窗口等。它在UI线程上绘制,但也处理UI线程上的单击。所以你想要过滤掉所有的东西,除了在UI线程上画画。在我回答的第二部分,我提出了两种简单的方法。