2011-05-19 167 views
20

父窗體上的按鈕用於啓動線程。 如果父窗體在開發環境中關閉,則線程會在後臺運行,以防止對64位Windows 7平臺上的源代碼進行編輯。 線程必須通過菜單>調試>停止調試來終止。 當父窗體關閉時,以編程方式終止線程的正確方法是什麼?如何在退出時殺死線程?

private void buttonW_Click(object sender, EventArgs e) 
{ 
    Thread t = new Thread(Main.MyThread); 
    t.Start(); 
} 

private static void MyThread() 
{ 
    ... 
} 

回答

45

如果您希望應用程序在主線程完成退出,你可以讓新線程在後臺線程:

Thread t = new Thread(Main.MyThread); 
t.IsBackground = true; 
t.Start(); 

基本上進程將退出,當所有的前景線程已經退出。

注意,這可能是個壞消息,如果後臺線程寫入數據時窗體關閉的文件,或者類似的東西...

+2

我簡直不敢相信我一直保存線程的堆棧主線程並遍歷它來關閉它們。 – BrunoLM 2011-05-19 17:34:49

+0

完美。謝謝。順便說一句:剛開始你的書。 – jacknad 2011-05-19 17:37:09

+0

@JackN:很高興幫助。希望你喜歡這本書:) – 2011-05-19 17:39:30