开发者

c# isBackground Thread is NOT terminating properly

I have one background thread I use for processing separately from the GUI, and everything works fine between the threads. However when I close the application, the program "closes" but does not kill the process. The background thread is keeping the program alive it seems.

I have set "myThreadInstance.IsBackground = true;", and I thought this would require C# to kill it when it is killed.

I am testing this all in Visual Studio (2010, using .NET 4.0), and after the first build, the rest all fail because the exe is still in use so it cannot overwrite it. Looking in task manager, it is there. Killing Visual Studio releases the vbhost process which releases my exe. Killing my exe's process, makes开发者_Go百科 vbhost respawn it in a second or two.


Actually, based on your description and other things you've tried (and their results), I believe the most likely cause is this:

You have another foreground thread in your application, other than the one you're examining.


Try using Application.Exit(0); in the form_closing/form_closed event.

Bug: I think this might be a bug. Look at the comments at the bottom of this MSDN page: http://msdn.microsoft.com/en-us/library/system.threading.thread.isbackground.aspx

Also, try using the BackgroundWorker. Here's a good description in the VisualStudio Magazine: http://visualstudiomagazine.com/articles/2007/09/01/simplify-background-threads.aspx


This type of problem usually requires code to figure out. Take your app and trim it down to the bare minimum necessary to show the issue.

However, most likely you are either not signaling the thread to terminate or the thread is such a long running beast that it doesn't ever see the signal.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜