C# 释放多个线程?
因此,我有一个足够简单的控制台应用程序:C# 释放多个线程?,c#,multithreading,C#,Multithreading,因此,我有一个足够简单的控制台应用程序: class Program { static void Main(string[] args) { Console.ReadKey(); } } 我用发布配置构建了它。当我运行它并打开TaskManager时,我看到了它 有4个线程。即使我没有创建任何线程,为什么会发生这种情况 这不可能是每个应用程序都需要的。我试着打开记事本,它只有一个线程。虽然它是本机应用程序,并且我的控制台应用程序是托管的 有什么想法吗?这
class Program
{
static void Main(string[] args)
{
Console.ReadKey();
}
}
我用发布配置构建了它。当我运行它并打开TaskManager时,我看到了它
有4个线程。即使我没有创建任何线程,为什么会发生这种情况
这不可能是每个应用程序都需要的。我试着打开记事本,它只有一个线程。虽然它是本机应用程序,并且我的控制台应用程序是托管的
有什么想法吗?这些是为应用程序创建的.NET Framework线程,您可以使用Visual Studio 2010线程调试窗口查看哪些线程属于问题下的应用程序 刚刚创建了一个带有空main方法的基本控制台应用程序,我们可以看到创建了8个线程: 请参见此处有关CLR内部线程的有趣讨论:
顺便说一句,记事本不是.NET Framework应用程序。在程序开始时,.NET Framework总是启动一些线程:
普通COM应用程序和托管应用程序之间有一个基本区别。这是垃圾收集 每个进程都有一个与之关联的终结器线程,因此应用程序中的终结器仅在该线程上运行 因此,线程是: 1.主线程(应用程序已创建) 2.终结器线程(由垃圾收集器使用)。 3.JIT线程(用于动态JIT代码)
其他线程可以是SysEvents等。我想您看到的线程是:
详细介绍了一些特殊的CLR线程。我知道,所以不可能创建单线程的.NET应用程序?我相信没有,因为您对.NET Framework行为没有这样的控制,只是想知道是否有人知道如何实现这一点,我指的是托管应用程序,不确定非托管应用程序我可以确认本机应用程序(C/C++)只有一个线程。只是尝试一下。你总是有至少一个线程的GC+你的主线程。感谢你的链接。优秀的资源!