如何使用BeginInvoke或类似方法在UI线程上执行串行操作

时间:2012-06-01 12:54:45

标签: .net multithreading freeze begininvoke

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

我想要做的是执行从工作线程上的UI线程调用的冗长操作,以便UI保持响应 - 但是这仍然必须是顺序的,我想等待操作完成但仍然抽取消息队列,这样UI就不会出现可怕的(Not Responding ...)错误。

如何以优雅的方式,丑陋和恶魔般的方式是产生一个线程并进入DoEvents循环直到它完成。

1 个答案:

答案 0 :(得分:0)

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

您可以显示一个模态可视元素,阻止用户与您的主界面交互,或者您可以在后台任务完成时禁用所有可视元素(以及相关时导航)。