2009-10-21 29 views
3

在主線程我需要做到以下幾點:關於產品模式表單和線程

  1. 創建第二個線程在那裏我會 顯示模式窗體,將作爲 的「活動指示器」
  2. 開始一個任務(這個任務必須在主線程中執行)
  3. 關閉在第二個線程中創建的模態窗體。

問題是我不知道如何顯示模態窗體並且不停止主線程。

有什麼建議嗎?

回答

2

我會使用一個線程池THEAD ......像......

ThreadPool.QueueUserWorkItem(o => dlg.Show()); 

這將啓動一個單獨的線程的對話。您的主線程將繼續處理。

+0

這不會是模態。你需要使用ThreadPool.QueueUserWorkItem(()=> dlg.ShowDialog(this);); – 2009-10-21 16:45:14

+0

豐富,感謝您的回覆。 其實我知道如何從第二個線程顯示錶單。我不知道的是如何在第二個線程中將窗體顯示爲模態,然後在我從主線程完成工作之後,告訴第二個線程關閉窗體。 我最終解決了我的問題,把一個控制變量放在我的窗體中。像「canDie」。我在第二個線程中執行ShowModal(線程不死)我在主線程中執行我想要做的事情,之後我將canDie切換爲de形式內的真實值,它關閉並完成第二個線程。 無論如何,我投你一票。 謝謝。 – 2009-10-21 19:18:34

+0

另一種觀察:在另一個線程中的模態形式不是可以模擬的。爲了讓他們行爲正確,我們必須將TopMost屬性設置爲true – 2009-10-25 04:35:42