我希望将表单显示为对话框,但问题是工作线程已停止工作,现在正在等待显示对话框的主线程。
工作线程不应该等待,应该开始在后台工作。我怎么能做到这一点?
答案 0 :(得分:5)
尝试使用BackgroundWorker,它将在一个单独的线程而不是主线程中完成您的工作。
选中此link,了解如何与后台工作人员合作。
答案 1 :(得分:1)
您还没有说过您的工作线程在做什么。假设您已经在使用后台线程,我猜您正在使用阻止调用的Control.Invoke
或Dispatcher.Invoke
,以便与UI进行通信。
如果您使用Control.BeginInvoke
或Dispatcher.BeginInvoke
,则不会被阻止。这些调用只是将消息发布到UI线程,而不等待它被处理。
当然,可能还有其他事情发生 - 给我们提供更多信息真的会有所帮助。