以下代碼不會退出應用程序。我如何退出應用程序並確保所有正在運行的線程都已關閉?如何退出所有正在運行的線程?
foreach (Form form in Application.OpenForms)
{
form.Close();
}
Application.Exit();
以下代碼不會退出應用程序。我如何退出應用程序並確保所有正在運行的線程都已關閉?如何退出所有正在運行的線程?
foreach (Form form in Application.OpenForms)
{
form.Close();
}
Application.Exit();
您不會在代碼中顯示任何線程的使用,但假設您的線程中有線程。
Thread myThread = new Thread(...);
myThread.IsBackground = true; // <-- Set your thread to background
myThread.Start(...);
A「HOWTO:停止多線程」從微軟的文章要關閉所有線程,你應該所有的人設置爲後臺線程你開始之前,那麼他們將被自動應用程序退出時,如關閉:http://msdn.microsoft.com/en-us/library/aa457093.aspx
你可以試試下面的代碼:
Environment.Exit(Environment.ExitCode);
這應該爲你打開的所有線程都在工作。
protected override void OnExiting(Object sender, EventArgs args)
{
base.OnExiting(sender, args);
Environment.Exit(Environment.ExitCode);
}
我在我的軟件中經歷了類似的問題,但不幸的是只是讓線程在後臺工作並沒有解決問題。事實上,當線程返回數據(主要軟件是數據驅動的),並且如果我關閉應用程序,則會導致Windows錯誤,從而產生調試消息。
那麼什麼是真正爲我工作:
第1步:的所有線程在後臺運行,如
Thread aThread = new Thread(MethodName);
aThread.IsBackground = true; //<-- Set the thread to work in background
aThread.Start();
步驟2:在窗體/應用程序調用的閉合動作Environment.Exit方法,如
Environment.Exit(Environment.ExitCode);
這使內存管理pe完美無缺,沒有內存泄漏。
希望這會有所幫助。
這讓我所做的工作:
而不是使用:這讓其他線程開放
Application.Exit()
,請嘗試使用:
Environment.Exit(Environment.ExitCode);
對不起,我不想重複。 Somdip Dey的回答讓它爲我工作。 – Jimmy 2017-07-25 16:27:45
@monkey_boys你在哪裏使用的線程你的代碼? – Kiril 2010-04-22 07:46:13