在主线程显示对话框时允许工作线程工作

时间:2012-01-30 06:19:15

标签: c# multithreading forms

我希望将表单显示为对话框,但问题是工作线程已停止工作,现在正在等待显示对话框的主线程。

工作线程不应该等待,应该开始在后台工作。我怎么能做到这一点?

2 个答案:

答案 0 :(得分:5)

尝试使用BackgroundWorker,它将在一个单独的线程而不是主线程中完成您的工作。

选中此link,了解如何与后台工作人员合作。

答案 1 :(得分:1)

您还没有说过您的工作线程在做什么。假设您已经在使用后台线程,我猜您正在使用阻止调用的Control.InvokeDispatcher.Invoke,以便与UI进行通信。

如果您使用Control.BeginInvokeDispatcher.BeginInvoke,则不会被阻止。这些调用只是将消息发布到UI线程,而不等待它被处理。

当然,可能还有其他事情发生 - 给我们提供更多信息真的会有所帮助。