我有一个简单的程序,有后台工作人员,它运行没有停止,无论何时关闭它,它将始终有一些仍在运行(或所有这些),我注意到关闭应用程序没有完全杀了它。运行一段时间后,有一些进程(每次运行1次)保留在Windows任务管理器的进程选项卡上。
他们为什么留下来?我不为他们做什么?
ps。:我已经阅读了有关背景工作者在应用程序关闭时的行为的问题,但我想它并没有按预期行事。有什么建议吗?
答案 0 :(得分:2)
更好的方法是在应用程序关闭之前使用事件或自定义操作停止/终止线程。
如下所示
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
的详细信息希望有所帮助
答案 1 :(得分:0)
他们是你自己旋转的线程吗?如果你创建自己的线程,我相信你需要将它们设置为后台线程,以便让它们与主线程一起终止。否则他们会保持这个过程活着。从内存中将给定线程设置为背景的代码类似于:
Thread t = new Thread(YouStartMethod);
t.IsBackground = true;
t.Start();
希望这有帮助