[英]How can I force all program threads to exit on program close?
關閉主窗口后,如何確保所有程序線程都中止?
您可以將“IsBackground”屬性設置為true。 CLR在應用程序退出時關閉所有后台線程。
ManualResetEvent
來指示它們關閉 另見: http : //msdn.microsoft.com/en-us/library/7a2f3ay4(v = vs.80).aspx
嘗試
Application.ExitThread();
Environment.Exit(0);
要么
Dispatcher.CurrentDispatcher.Thread.Abort();
將IsBackground
屬性設置為true,並添加以下行:
AppDomain.CurrentDomain.ProcessExit += CloseMe; // for the main process
AppDomain.CurrentDomain.DomainUnload += CloseMe; // for ApplicationDomains
讓CloseMe
方法設置一個在線程的主循環中檢查的標志。
將它們收集到某處,例如
static public List<Thread> AllThreads;
並將該集合.Abort()
用於.Abort()
它們。
這是艱難而錯誤的方式。 更好的方法是讓他們以某種方式停止,然后一個接一個地進行.Join()
。
通過讓程序實際關閉,即。 不要故意引入任何強制運行主窗口的線程等待任何其他線程的代碼。 然后,運行主窗口的線程可以自由地使用exitProcess(),然后操作系統將中止進程中的所有其他線程,無論它們在做什么。
Rgds,馬丁
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.