我有一個簡單的程序,它擁有backgroundworkers,並且它不停地運行,無論何時關閉它,它總會有一些仍在運行(或全部),並且我注意到關閉應用程序並沒有「完全殺死它。運行一段時間後,Windows任務管理器的進程選項卡上仍有進程(每次運行1個進程)。Backgroundworker線程不關閉程序關閉?
他們爲什麼還留着?我爲他們做什麼不是?
ps .:我已經在應用程序關閉時閱讀了關於背景工作者行爲的問題,但我想這不是按照預期行事。有什麼建議麼 ?
我有一個簡單的程序,它擁有backgroundworkers,並且它不停地運行,無論何時關閉它,它總會有一些仍在運行(或全部),並且我注意到關閉應用程序並沒有「完全殺死它。運行一段時間後,Windows任務管理器的進程選項卡上仍有進程(每次運行1個進程)。Backgroundworker線程不關閉程序關閉?
他們爲什麼還留着?我爲他們做什麼不是?
ps .:我已經在應用程序關閉時閱讀了關於背景工作者行爲的問題,但我想這不是按照預期行事。有什麼建議麼 ?
更好的辦法是停止/殺死使用封閉廣告應用程式前一個事件或自定義操作線程。
像如下
private void ButtonStopBGWorker_Click(object sender, RoutedEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
}
這篇文章at the forum will給你更深入的瞭解。 另外,看看MSDN上有關如何管理Backgroundworker Threads
希望它可以幫助
他們是你自己旋轉起來的線程嗎?如果你創建自己的線程,我相信你需要將它們設置爲後臺線程,以使它們與主線程一起終止。否則,他們會保持這個過程的活力。從內存中的代碼來設置特定線程的背景是這樣的:
Thread t = new Thread(YouStartMethod);
t.IsBackground = true;
t.Start();
希望這有助於
不,他們是背景主題的線程(我不確定我可以這樣說,對不起)我不會自己開始線程。 – Marcelo 2010-02-05 10:42:01
我要問的細節:你真的單獨使用BackgroundWorker的,或者你還可以創建一些「手冊」的主題?如果是的話,那個手動線程('new Thread()')必須有'IsBackground = true;' – 2010-02-05 10:32:07
我剛剛問過它之前檢查過它,在開始使用backgroundworker之前我使用了正常線程,現在我看看如果我沒有沒有錯過任何仍在代碼中的人,不,沒有任何正常的線程,當我使用它們時,它們是IsBackground = true; – Marcelo 2010-02-05 10:57:17