控制台应用程序中的线程是什么?

时间:2017-10-07 14:00:29

标签: c# console-application

我正在使用下面的代码片段列出基本控制台应用程序中的线程。

lock (threadLock)
{
    ProcessThreadCollection currentThreads = Process.GetCurrentProcess().Threads;
    foreach (ProcessThread thread in currentThreads)
    {
        Console.WriteLine(" Id={0}, CurrentPriority={1}, State={2}",
                          thread.Id, thread.CurrentPriority, thread.ThreadState);
    }
}

有六个主题。下面是初始输出。

Id=2924, CurrentPriority=8, State=Running
Id=8900, CurrentPriority=8, State=Wait
Id=524, CurrentPriority=8, State=Wait
Id=4916, CurrentPriority=8, State=Wait
Id=5124, CurrentPriority=8, State=Wait
Id=6780, CurrentPriority=11, State=Wait

显然,第一个线程是主线程。最后一个,CurrentPriority = 11,是Finalizer线程,因为下面是输出 在析构函数中运行时:

Id=2924, CurrentPriority=8, State=Wait
Id=8900, CurrentPriority=8, State=Wait
Id=524, CurrentPriority=8, State=Wait
Id=4916, CurrentPriority=8, State=Wait
Id=5124, CurrentPriority=8, State=Wait
Id=6780, CurrentPriority=11, State=Running

我的问题是关于其他四个主题。应该是其中之一 UI线程。另一个应该是垃圾收集器(GC)线程。显然,一个应该是一个Threadpool线程。最后的第六个帖子是什么?每个人的代码片段是什么,以便我可以 运行每个单独的线程? GC线程是否执行应用程序代码?很多来源混合了Finalizer和GC线程,所以很难弄清楚这些是单独的线程还是一个线程。为每个代码片段提供代码片段会很有帮助,这样我就可以实际运行每个帖子。

0 个答案:

没有答案