在我的C#
應用程序中,我有一個單獨的窗口,其中包含一個在單獨線程中運行的進度欄。每30秒鐘發送一次來自服務器的數據請求並相應地填寫進度條。檢測線程何時關閉
問題是,當我關閉主程序時,帶進度條的第二個窗口保持打開狀態。
如何編程第二個線程來檢測第一個線程何時關閉,並相應地關閉自己?
在我的C#
應用程序中,我有一個單獨的窗口,其中包含一個在單獨線程中運行的進度欄。每30秒鐘發送一次來自服務器的數據請求並相應地填寫進度條。檢測線程何時關閉
問題是,當我關閉主程序時,帶進度條的第二個窗口保持打開狀態。
如何編程第二個線程來檢測第一個線程何時關閉,並相應地關閉自己?
你可以從你的第一個窗口使用WINDOW_CLOSED事件:
private void Window1_Closed(object sender, EventArgs e)
{
Window2.Close(); // Close your second window
}
然後在第二個窗口:
private void Window2_Closed(object sender, EventArgs e)
{
// abort all Threads
thread.Abort();
}
關閉窗口不一定會關閉任何後臺線程。 – 2013-04-05 15:49:36
@安迪謝謝。我在第一個窗體上使用FormClosed事件,就像你所建議的那樣,然後使用'thread.Abort()' - 關閉第二個窗口並中止第二個線程。 – 2013-04-05 15:51:18
也歡迎堆棧溢出,安迪:) – 2013-04-05 15:51:49
讓工作線程爲後臺線程。 http://msdn.microsoft.com/en-us/library/h339syd0.aspx
不建議從其父線程中關閉子線程,因爲此 很可能會阻止某些資源被正確釋放。
第二個線程是後臺線程嗎? – Yahya 2013-04-05 15:45:44
如何響應關閉事件並手動終止第二個線程? – geniaz1 2013-04-05 15:46:22