Подтвердить что ты не робот

Бесплатные несколько потоков?

Итак, у меня достаточно простое консольное приложение:

class Program
{
    static void Main(string[] args)
    {
        Console.ReadKey();
    }
}

Я построил его с конфигурацией релиза. Когда я запускаю его и открываю диспетчер задач, я вижу его имеет 4 потока. Почему это происходит, хотя я не создаю нити?

Это не может быть каждое приложение. Я попробовал открыть блокнот, и у него всего одна нить. Хотя это родное приложение, и мое консольное приложение управляется.

Любые идеи?

4b9b3361

Ответ 2

Это потоки .NET Framework, созданные для приложения, вы можете использовать окно отладки Visual Studio 2010 Threads, чтобы узнать, какие потоки принадлежат к приложению в этом вопросе.

Просто создано базовое консольное приложение с пустым основным методом, и мы видим, что было создано 8 потоков:

enter image description here

Посмотрите интересное обсуждение внутренних потоков CLR здесь: Внутренние потоки среды CLR

BTW, блокнот не является приложением .NET Framework

Ответ 3

.NET Framework всегда запускает некоторые потоки в начале программы:

  • Ваша основная тема (очевидно)
  • Нить сбора мусора
  • поток JIT.

Ответ 4

Существует одно основное различие между обычным COM-приложением и управляемым приложением. Это коллекция мусора.

У каждого процесса связан связанный с ним поток Finalizer, так что финализаторы в вашем приложении работают только с этим потоком.

Итак, потоки: 1. Главная тема (созданная вашим приложением) 2. Заточка Finalizer (используется сборщиком мусора. 3. JIT Thread (используется для JIT-кода на лету)

Другие потоки могут быть SysEvents и т.д.