Ответ 1
Я представляю, какие темы вы видите:
- Основной поток.
- Нить финализатора
- Вспомогательный поток отладочного процесса
- Совпадающий поток GC.
Этот пост описывает некоторые специальные потоки CLR.
Итак, у меня достаточно простое консольное приложение:
class Program
{
static void Main(string[] args)
{
Console.ReadKey();
}
}
Я построил его с конфигурацией релиза. Когда я запускаю его и открываю диспетчер задач, я вижу его имеет 4 потока. Почему это происходит, хотя я не создаю нити?
Это не может быть каждое приложение. Я попробовал открыть блокнот, и у него всего одна нить. Хотя это родное приложение, и мое консольное приложение управляется.
Любые идеи?
Я представляю, какие темы вы видите:
Этот пост описывает некоторые специальные потоки CLR.
Это потоки .NET Framework, созданные для приложения, вы можете использовать окно отладки Visual Studio 2010 Threads, чтобы узнать, какие потоки принадлежат к приложению в этом вопросе.
Просто создано базовое консольное приложение с пустым основным методом, и мы видим, что было создано 8 потоков:
Посмотрите интересное обсуждение внутренних потоков CLR здесь: Внутренние потоки среды CLR
BTW, блокнот не является приложением .NET Framework
.NET Framework всегда запускает некоторые потоки в начале программы:
Существует одно основное различие между обычным COM-приложением и управляемым приложением. Это коллекция мусора.
У каждого процесса связан связанный с ним поток Finalizer, так что финализаторы в вашем приложении работают только с этим потоком.
Итак, потоки: 1. Главная тема (созданная вашим приложением) 2. Заточка Finalizer (используется сборщиком мусора. 3. JIT Thread (используется для JIT-кода на лету)
Другие потоки могут быть SysEvents и т.д.