2012-01-30 25 views
2

我想將窗體顯示爲對話框,但問題是工作線程已停止工作,並且正在等待顯示對話框的主線程。允許工作線程在主線程顯示對話框時工作

工作線程不應該等待,應該開始在後臺工作。我怎樣才能做到這一點?

+0

您的工作線程是否使用'Invoke'命令更新主線程上的GUI控件?調用等待直到命令完成,但它不能,因爲主線程被對話框阻塞。嘗試使用'BeginInvoke'來代替。 – 2012-01-30 06:26:20

回答

1

你還沒有說過你的工作線程在做什麼。假設你已經在使用後臺線程,我的猜測是你正在使用Control.InvokeDispatcher.Invoke,這是阻止調用,以便與UI進行通信。

如果您使用Control.BeginInvokeDispatcher.BeginInvoke,您將不會被阻止。這些調用只是將消息發佈到UI線程,而不用等待它被處理。

當然,可能還有其他事情正在發生 - 給我們提供更多的信息將會非常有幫助。

5

嘗試使用BackgroundWorker,這將在單獨的線程而不是主線程中完成您的工作。

請檢查此link以瞭解如何與後臺工作人員合作。