Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何使用BeginInvoke或类似工具在UI线程上执行串行操作_.net_Multithreading_Freeze_Begininvoke - Fatal编程技术网

.net 如何使用BeginInvoke或类似工具在UI线程上执行串行操作

.net 如何使用BeginInvoke或类似工具在UI线程上执行串行操作,.net,multithreading,freeze,begininvoke,.net,Multithreading,Freeze,Begininvoke,我有一个看似简单的问题,但我不知道如何解决它 我想做的是在工作线程上执行一个从UI线程调用的长时间操作,以便UI保持响应-但是这仍然必须是顺序的,我想等待操作完成,但仍然会泵送消息队列,以便UI不会收到可怕的不响应。。。错误 以一种优雅的方式,丑陋而邪恶的方式是产生一个线程并进入DoEvents循环,直到它完成。你所要求的是矛盾的。您希望UI执行时具有响应性,但不希望它执行代码并等待操作完成 您可以显示一个阻止用户与主界面交互的模式视觉元素,也可以在后台任务完成时禁用所有相关的视觉元素和导航。请

我有一个看似简单的问题,但我不知道如何解决它

我想做的是在工作线程上执行一个从UI线程调用的长时间操作,以便UI保持响应-但是这仍然必须是顺序的,我想等待操作完成,但仍然会泵送消息队列,以便UI不会收到可怕的不响应。。。错误


以一种优雅的方式,丑陋而邪恶的方式是产生一个线程并进入DoEvents循环,直到它完成。

你所要求的是矛盾的。您希望UI执行时具有响应性,但不希望它执行代码并等待操作完成


您可以显示一个阻止用户与主界面交互的模式视觉元素,也可以在后台任务完成时禁用所有相关的视觉元素和导航。

请为此添加一个语言标记。我真正想要的是UI不冻结,我希望它仍然绘制,为了在动作完成时显示沙漏,我实际上不希望用户能够与UI交互,除了移动窗口等。它在UI线程上绘制,但也处理UI线程上的单击。所以你想要过滤掉所有的东西,除了在UI线程上画画。在我回答的第二部分,我提出了两种简单的方法。