2014-02-10 248 views
1

我有一個Windows窗體應用程序與主窗體和幾個後臺線程。爲了顯示「nice」消息,我使用ShowDialog()實現了一個表單,作爲模態對話框顯示。C#ShowDialog()不會阻塞從線程觸發的主窗體

所有對ShowDialog()的調用都是在主窗體的表單級(而不是線程級)上實現的,但有時我會從主窗體的表單級處理的線程觸發事件。在這些情況下,對話框不再是模態的...主窗體不被阻塞。當ShowDialog()的調用不是從一個線程觸發時,它是根據需要的模式。

如何確保每次調用ShowDialog()都會阻止主窗體?

回答

8

如何確保每次致電ShowDialog()都會阻止主窗體?

在主線程上執行對ShowDialog()的調用。如果您需要從其他線程調用它們,請使用Invoke()在主線程上運行它們。

+0

可以請你舉個例子說明如何使用'Invoke()'而不是'ShowDialog()' – devnull69

+0

@ devnull69 Google可以給你幾十萬個如何使用'Invoke'的例子。 – Servy

+0

確實。例如:http://msdn.microsoft.com/en-us/library/ms171728(v=vs.85).aspx –