这个简单的程序以15个线程开始 - 根据计数。有时它会在一生中掉落一些,但它们会回来。
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine(Process.GetCurrentProcess().Threads.Count);
Thread.Sleep(500);
}
}
}
我期待这个过程只有一个帖子(我的直觉由this支持)
没有调试器,进程只有(!)4个线程。当然,任何CLR内容都会隐藏在我的进程中?
这有多重要?这个过程真的有那么多线程吗?为什么呢?
答案 0 :(得分:35)
尝试在调试器外运行它(即按Ctrl + F5而不是F5)。你应该只看到三个线程 - 主线程,GC线程&终结者线程IIRC。您看到的其他线程是与调试器相关的线程。
答案 1 :(得分:5)
如果在没有附加调试器的情况下运行它,则线程明显减少。那些可能是终结者线程,以及其他管家CLR的东西。
答案 2 :(得分:5)
Project + Properties,Debugging,untick“启用Visual Studio托管过程”。我无法发现它在做什么。只要勾选“启用非托管代码调试”选项以试图查看这些线程,它们就不再启动了。没有线索。但我相信这对我们有利:)
答案 3 :(得分:4)
尝试在未连接调试器(Visual Studio)的情况下运行它(Ctrl + F5)。你会看到会有更少(可能是3个)线程。大多数线程都与调试器有关。