我正在使用下面的代码片段列出基本控制台应用程序中的线程。
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线程,所以很难弄清楚这些是单独的线程还是一个线程。为每个代码片段提供代码片段会很有帮助,这样我就可以实际运行每个帖子。