Backgroundworker线程没有关闭程序关闭?

时间:2010-02-05 10:28:02

标签: c# visual-studio multithreading backgroundworker winforms

我有一个简单的程序,有后台工作人员,它运行没有停止,无论何时关闭它,它将始终有一些仍在运行(或所有这些),我注意到关闭应用程序没有完全杀了它。运行一段时间后,有一些进程(每次运行1次)保留在Windows任务管理器的进程选项卡上。

他们为什么留下来?我不为他们做什么?

ps。:我已经阅读了有关背景工作者在应用程序关闭时的行为的问题,但我想它并没有按预期行事。有什么建议吗?

2 个答案:

答案 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();

希望这有帮助