最近在學習多執行緒程式的開發,但是啟動了多個執行緒的程式在關閉的時候卻出現了問題,如果程式退出的時候不關閉執行緒,那麼執行緒就會一直的存在,但是大多啟動的執行緒都是區域性變數,不能一一的關閉,如果呼叫thread.currentthread.abort()方法關閉主線程的話,就會出現threadabortexception 異常,因此這樣不行。
後來找到了這個辦法:
thread.isbackground 設定執行緒為後台執行緒。
msdn對前台執行緒和後台執行緒的解釋:託管執行緒或者是後台執行緒,或者是前台執行緒。後台執行緒不會使託管執行環境處於活動狀態,除此之外,後台執行緒與前台執行緒是一樣的。一旦所有前台執行緒在託管程序(其中 .exe 檔案是託管程式集)中被停止,系統將停止所有後台執行緒並關閉。通過設定 thread.isbackground 屬性,可以將乙個執行緒指定為後台執行緒或前台執行緒。例如,通過將 thread.isbackground 設定為 true,就可以將執行緒指定為後台執行緒。同樣,通過將 isbackground 設定為 false,就可以將執行緒指定為前台執行緒。從非託管**進入託管執行環境的所有執行緒都被標記為後台執行緒。通過建立並啟動新的 thread 物件而生成的所有執行緒都是前台執行緒。如果要建立希望用來偵聽某些活動(如套接字連線)的前台執行緒,則應將 thread.isbackground 設定為 true,以便程序可以終止。
所以解決辦法就是在主線程初始化的時候,設定:
thread.currentthread.isbackground = true;
這樣,主線程就是後台執行緒,在關閉主程式的時候就會關閉主線程,從而關閉所有執行緒。
但是這樣的話,就會強制關閉所有正在執行的執行緒,所以在關閉的時候要對執行緒工作的結果儲存。
C 多執行緒強制退出程式
最近在學習多執行緒程式的開發,但是啟動了多個執行緒的程式在關閉的時候卻出現了問題,如果程式退出的時候不關閉執行緒,那麼執行緒就會一直的存在,但是大多啟動的執行緒都是區域性變數,不能一一的關閉,如果呼叫thread.currentthread.abort 方法關閉主線程的話,就會出現threadabo...
C 多執行緒強制退出程式
多執行緒程式的開發,啟動了多個執行緒的程式在關閉的時候卻出現了問題,如果程式退出的時候不關閉執行緒,那麼執行緒就會一直的存在,但是大多啟動的執行緒都是區域性 變數,不能一一的關閉,如果呼叫thread.currentthread.abort 方法關閉主線程的話,就會出現 threadabortexc...
c 強制退出程式
引用 msdn和從網上查資料才得知,dispose 方法,雖然能釋放當前窗體的資源,卻不能強制結束迴圈,要想強制突出當前程式要用 system.environment.exit int exitcode 方法 該方法 終止當前程序並為基礎作業系統提供指定的退出 如下則問題解決 private voi...