关于C# Thread的简单问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C# Thread的简单问题相关的知识,希望对你有一定的参考价值。

在一个C#程序中,一个线程中执行一个无限循环的处理。
在开始这个线程的时候写了:
_ThreadName.IsBackground = true;
_ThreadName.Start();

那么在退出这个程序的时候这个线程会自动结束么?

如果没有写_ThreadName.IsBackground = true;是不是这个线程会一直执行下去。要结束这个线程必须在退出程序时写_ThreadName.Abort();吗?

谢谢
就是说如果_ThreadName.IsBackground = true;我在结束程序的时候就不用_ThreadName.Abort();CLR会自动调用Abort();结束线程。

如果_ThreadName.IsBackground = false;我在结束程序的时候就要自己写_ThreadName.Abort();

我这么理解对么?

Background状态表示该线程在后台运行,那么后台运行的线程有什么特别的地方呢?其实后台线程跟前台线程只有一个区别,那就是后台线程不妨碍程序的终止。一旦一个进程所有的前台线程都终止后,CLR(通用语言运行环境)将通过调用任意一个存活中的后台进程的Abort()方法来彻底终止进程。 参考技术A 前后台线程的差别,可以看MSDN
http://msdn.microsoft.com/zh-cn/library/system.threading.thread.isbackground(VS.80).aspx

对于前台线程,如果退出时,该线程未结束,则会报一个异常“未处理的异常”
参考技术B 最好Abort()一下,不管是不是自动结束的

以上是关于关于C# Thread的简单问题的主要内容,如果未能解决你的问题,请参考以下文章

C#中你想象的Task,很简单?

C#中的简单线程[重复]

关于C#线程挂起

Unity C# Scoket Thread

关于Thread类的简单使用

这个问题是关于C#线程内部操作datagridview 使数据重新加载实现向上跑动!!!