我可以让我的线程池创建其线程作为前台吗?

Rol*_*oll 8 .net c# multithreading threadpool

默认情况下,.NET中的线程池使用后台线程.

我不能改变它作为前景运行.

如何将其更改为作为前台线程运行?

编辑:

我需要使用这个,因为我正在更改我的应用程序,因为高容量处理(在我手动处理线程之前,默认情况下是Foreground),我不想改变我的应用程序只是为了使它适应背景线程场景..

我想知道为什么线程池默认情况下不是Foreground

Han*_*ant 18

一个"后台线程"的概念是指非常 .NET中的小.Thread.IsBackground属性只是一个简单的标志,可帮助CLR决定在AppDomain卸载时是否应该粗略地中止线程,或者它是否应该等待线程自动退出.

如果希望线程池线程在程序退出时继续运行,则可以更改属性.此代码段显示了可能性:

using System;
using System.Threading;

class Program {
    static void Main(string[] args) {
        var sync = new ManualResetEvent(false);
        ThreadPool.QueueUserWorkItem((_) => {
            Console.WriteLine("Running");
            Thread.CurrentThread.IsBackground = false;
            sync.Set();
            Thread.Sleep(5000);
            Console.WriteLine("Done, should exit now");
            Thread.Sleep(250);
        });
        sync.WaitOne();  // Ensures IsBackground is set
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里注意保持球的目光.如果这对你很重要,那么你很可能做错了.