后台线程正在显示

本文关键字:显示 线程 后台 | 更新日期: 2023-09-27 18:35:29

请考虑以下代码。

在主

for (int i = 0; i <= 9; i++)
{
    ThreadPool.QueueUserWorkItem(Hi,i);
}
static void Hi(object arg)
{
    int n = (int)arg;
    Console.WriteLine("Thread ID:{0}  IsBackground:{1} HI Joshua.. You got:{2} ", Thread.CurrentThread.ManagedThreadId,
        Thread.CurrentThread.IsBackground,n);
}

我得到以下输出

Thread ID:10  IsBackground:True HI Joshua.. You got:2
Thread ID:10  IsBackground:True HI Joshua.. You got:3
Thread ID:10  IsBackground:True HI Joshua.. You got:4
Thread ID:10  IsBackground:True HI Joshua.. You got:6
Thread ID:10  IsBackground:True HI Joshua.. You got:7
Thread ID:10  IsBackground:True HI Joshua.. You got:8
Thread ID:10  IsBackground:True HI Joshua.. You got:9
Thread ID:11  IsBackground:True HI Joshua.. You got:5
Thread ID:13  IsBackground:True HI Joshua.. You got:1
Thread ID:12  IsBackground:True HI Joshua.. You got:0

我的问题是,由于线程池线程具有 background 属性 true,那么为什么它们会显示在我的输出中?如果有人能指导我一个裁判或书,在那里我可以得到线程池工作的例子,那也很好。

后台线程正在显示

我想你可能会对什么是后台线程感到困惑。

后台线程

与前台线程相同,只是后台线程不会阻止进程终止。

术语"后台线程"确实暗示了在后台运行的东西,用户看不到,但这与文档相反。

您可以在此处阅读

有关后台线程的更多信息,并在此处或此处阅读有关线程的更多信息。

当控制台应用程序启动时,操作系统会自动 将三个 I/O 流与控制台关联:标准输入流、 标准输出流和标准错误输出流。你 应用程序可以从标准输入流中读取用户输入;写 正常数据到标准输出流;并将错误数据写入 标准错误输出流。这些流将呈现给您 应用程序作为 Console.In、控制台和的值 控制台错误属性。默认情况下,In 属性的值为 一个 System.IO.TextReader 对象,以及 Out 和 Error 的值 属性是 System.IO.TextWriter 对象。但是,您可以设置 这些属性指向不代表控制台的流;为 例如,可以将这些属性设置为表示文件的流。 重定向标准输入、标准输出或标准错误 流,调用 Console.SetIn、Console.SetOut 或 Console.SetError 方法,分别。使用这些流的 I/O 操作是 已同步,这意味着多个线程可以从或 写入,流。

控制台类

ThreadPool 的线程是后台线程,但它们可以访问静态Console类并调用其静态方法WriteLine并写入输出。

可以在此处了解有关 C# 中的线程的详细信息