为什么3个线程用于基本单线程c#控制台应用程序?

Nab*_*ilS 19 .net c# console multithreading

我在c#中用一个Console.ReadLine语句创建了一个控制台应用程序.在Visual Studio中运行此应用程序并进入调试器,在线程窗口中显示7个线程(6个工作线程,一个是.NET SystemEvents,另一个是vshost.RunParkingWindow主线程).

当我在Visual Studio外部运行应用程序时,我在Windows任务管理器中看到总共3个线程.为什么这么多,我期待1个线程?产生的其他产品是什么?

Ree*_*sey 37

如果您正在运行.NET应用程序,我相信除了主线程之外,您总是会获得JIT(即时编译器)以及GC(垃圾收集)线程的线程(主要是休眠).


Zot*_*tta 5

您不必担心:如果您没有明确使用它们,您将不会在主线程之外的其他线程中运行任何代码.其他主题是:

  • 垃圾收集器
  • 定稿
  • 线程池

3个线程共享一个stdin吗?

理论上是的,但是其他人不会使用它,除非你在析构函数里面或在ThreadPool.QueueUserWorkItem里面使用Console.ReadLine,所以不要担心你会在主线程中获得所有数据