關閉應用程式時如何關閉子執行緒

2021-05-22 06:03:27 字數 631 閱讀 6198

執行緒分為前台執行緒和後台執行緒,這兩者的區別就是:應用程式必須執行完所有的前台執行緒才可以退出,有時雖然我們關閉了主視窗,但前以子執行緒還沒有結束,應用程式此時並沒有真正完全關閉;而對於後台執行緒,應用程式則可以不考慮其是否已經執行完畢而直接退出,所有的後台執行緒在應用程式退出時都會自動結束。

通過將 thread.isbackground 設定為 true,就可以將執行緒指定為後台執行緒。同樣,通過將 isbackground 設定為 false,就可以將執行緒指定為前台執行緒。從非託管**進入託管執行環境的所有執行緒都被標記為後台執行緒。通過建立並啟動新的 thread 物件而生成的所有執行緒都是前台執行緒。

如果沒有設定前後臺執行緒的區別,還有另外乙個方法可以在程式結束的時候對其執行關閉操作,那就是在程式的關閉事件中加入如下處理**:

try

catch (threadabortexception)

通過檢測threadabortexception異常來執行關聯執行緒的停止操作。

但是,通常情況下,我們最好讓子執行緒自己結束,即執行緒工作完成,自動結束.暴力終止執行緒,可能導致執行緒任務異常終止,造成資料出錯.

C 關閉應用程式時如何關閉子執行緒

託管執行緒或者是後台執行緒,或者是前台執行緒。後台執行緒不會使託管執行環境處於活動狀態,除此之外,後台執行緒與前台執行緒是一樣的。一旦所有前台執行緒在託管程序 其中 exe 檔案是託管程式集 中被停止,系統將停止所有後台執行緒並關閉。通過設定 thread.isbackground 屬性,可以將乙個...

C 關閉應用程式時如何關閉子執行緒

託管執行緒或者是後台執行緒,或者是前台執行緒。後台執行緒不會使託管執行環境處於活動狀態,除此之外,後台執行緒與前台執行緒是一樣的。一旦所有前台執行緒在託管程序 其中 exe 檔案是託管程式集 中被停止,系統將停止所有後台執行緒並關閉。通過設定 thread.isbackground 屬性,可以將乙個...

MFC在退出主程式時關閉外部應用程式

最近在使用mfc呼叫外部exe應用程式,想在退出主程式的同時將外部應用程式關閉。於是在網上找到了這篇文章進行參考具體 如下 void closeprogram cstring strprogram delete info closehandle handle 其中使用createtoolhelp32...