c#非常小的控制台应用程序中的默认线程(Visual Studio 2012)

时间:2013-10-18 13:28:33

标签: c# multithreading visual-studio-2012

我试图弄清楚每个新的c#应用程序中出现的线程的目的是什么。 我创建了一个具有空主函数的新控制台应用程序:

static void Main(string[] args)
{
}

并在函数末尾添加一个断点,然后我查看了线程窗口:

Default Threads

有时会显示8个主题,有时会显示7个主题。

任何人都可以解释所有这些线程的目的是什么,为什么我需要它们用于这样一个简单的项目?

2 个答案:

答案 0 :(得分:6)

简而言之,这些额外的线程与GC,Finalizer,VS和Debugger相关。以下链接为您的问题提供了更详细的答案:

Why does this simple .NET console app have so many threads?

答案 1 :(得分:2)

首先,我认为我们需要了解什么是线程?

主题:

线程使您的程序能够执行并发处理,以便您可以一次执行多个操作。例如,您可以将繁重的图像加载到应用程序中,执行后台任务,此时您可以处理流式传输到文件。

如果您不使用线程 - 那么当您将图像加载到您的应用程序时,您的UI就会被卡住,因此您无法执行任何其他操作,只需等待图像完成加载。

那么为什么我们的应用程序从7-8个线程开始呢?

让我们看看我们有哪些主题:

默认情况下,C#程序有一个线程。该线程执行程序中以Main方法开始和结束的代码。

你还有一个垃圾收集器线程,负责在生命周期结束时杀死对象。

还有一些调试线程。