前台线程和后台线程

托管线程是后台线程或前台线程。 后台线程与前台线程相同,但有一个例外:后台线程不会使托管执行环境保持运行。 在托管进程中停止所有前台线程(其中 .exe 文件是托管程序集)后,系统将停止所有后台线程并关闭。

注释

当运行时由于进程正在关闭而停止后台线程时,不会在线程中引发异常。 但是,当由于 AppDomain.Unload 方法卸载应用程序域而导致线程停止时,前台线程和后台线程都会抛出一个 ThreadAbortException

使用属性 Thread.IsBackground 确定线程是后台线程还是前台线程,还是更改其状态。 可以通过将线程的 IsBackground 属性设置为 true,随时将其更改为后台线程。

重要

线程的前景或后台状态不会影响线程中未经处理的异常的结果。 前台或后台线程中的未经处理的异常会导致应用程序终止。 请参阅 托管线程中的异常

属于托管线程池(即其属性为IsThreadPoolThread)的true线程是后台线程。 从非托管代码进入托管执行环境的所有线程都标记为后台线程。 创建和启动新 Thread 对象生成的所有线程默认为前台线程。

如果您使用线程来监视活动(例如套接字连接),请将线程的 IsBackground 属性设置为 true,以便线程不会阻止您的进程终止。

另请参阅