托管线程是后台线程或前台线程。 后台线程与前台线程相同,但有一个例外:后台线程不会使托管执行环境保持运行。 在托管进程中停止所有前台线程(其中 .exe 文件是托管程序集)后,系统将停止所有后台线程并关闭。
注释
当运行时由于进程正在关闭而停止后台线程时,不会在线程中引发异常。 但是,当由于 AppDomain.Unload 方法卸载应用程序域而导致线程停止时,前台线程和后台线程都会抛出一个 ThreadAbortException。
使用属性 Thread.IsBackground 确定线程是后台线程还是前台线程,还是更改其状态。 可以通过将线程的 IsBackground 属性设置为 true
,随时将其更改为后台线程。
重要
线程的前景或后台状态不会影响线程中未经处理的异常的结果。 前台或后台线程中的未经处理的异常会导致应用程序终止。 请参阅 托管线程中的异常。
属于托管线程池(即其属性为IsThreadPoolThread)的true
线程是后台线程。 从非托管代码进入托管执行环境的所有线程都标记为后台线程。 创建和启动新 Thread 对象生成的所有线程默认为前台线程。
如果您使用线程来监视活动(例如套接字连接),请将线程的 IsBackground 属性设置为 true
,以便线程不会阻止您的进程终止。