C 多執行緒強制退出程式

2022-03-07 07:19:29 字數 884 閱讀 8152

多執行緒程式的開發,啟動了多個執行緒的程式在關閉的時候卻出現了問題,如果程式退出的時候不關閉執行緒,那麼執行緒就會一直的存在,但是大多啟動的執行緒都是區域性 變數,不能一一的關閉,如果呼叫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 方法關閉主線程的話,就會出現threadabo...

c 強制退出程式

引用 msdn和從網上查資料才得知,dispose 方法,雖然能釋放當前窗體的資源,卻不能強制結束迴圈,要想強制突出當前程式要用 system.environment.exit int exitcode 方法 該方法 終止當前程序並為基礎作業系統提供指定的退出 如下則問題解決 private voi...