c#isBackground线程没有正确终止

时间:2010-09-10 03:56:12

标签: c# multithreading

我有一个后台线程用于与GUI分开处理,一切都在线程之间正常工作。但是,当我关闭应用程序时,程序“关闭”但不会终止该过程。后台线程似乎保持程序活着。

我设置了“myThreadInstance.IsBackground = true;”,我认为这会要求C#在它被杀死时杀死它。

我正在Visual Studio中测试这一切(2010年,使用.NET 4.0),并且在第一次构建之后,其余都失败了,因为exe仍在使用中,因此无法覆盖它。看着任务经理,就在那里。杀死Visual Studio会释放释放我的exe的vbhost进程。杀死我的exe进程,让vbhost在一两秒内重新生成它。

3 个答案:

答案 0 :(得分:1)

实际上,根据你的描述和你尝试的其他事情(及其结果),我认为最可能的原因是:

您的应用程序中有另一个前台线程,而不是您正在检查的那个。

答案 1 :(得分:0)

这类问题通常需要代码来解决。拿起你的应用程序并将其修剪到显示问题所需的最低限度。

然而,很可能你要么没有发信号通知线程终止,要么线程是如此长期运行的野兽,它永远不会看到信号。

答案 2 :(得分:0)

尝试使用Application.Exit(0);在form_closing / form_closed事件中。

错误:我认为这可能是个错误。请查看此MSDN页面底部的评论:http://msdn.microsoft.com/en-us/library/system.threading.thread.isbackground.aspx

另外,请尝试使用 BackgroundWorker 。以下是VisualStudio杂志中的一个很好的描述:http://visualstudiomagazine.com/articles/2007/09/01/simplify-background-threads.aspx