Ответ 1
Попробуйте запустить его вне отладчика (т.е. нажмите Ctrl + F5 вместо F5). Вы должны видеть только три потока - основной поток, поток GC и поток финализатора IIRC. Другие потоки, которые вы видите, являются связанными с отладчиком потоками.
Эта простая программа начинается с 15 потоков - согласно счету. Иногда в течение своей жизни он выпадает несколько, но они возвращаются.
class Program
{
static void Main(string[] args)
{
while (true)
{
Console.WriteLine(Process.GetCurrentProcess().Threads.Count);
Thread.Sleep(500);
}
}
}
Я ожидал, что процесс будет иметь только один поток (и моя интуиция была подкреплена this)
Без отладчика процесс имеет только (!) 4 потока. Наверняка любой материал CLR будет скрыт от моего процесса?
Что это такое? У процесса действительно есть много потоков? Почему?
Попробуйте запустить его вне отладчика (т.е. нажмите Ctrl + F5 вместо F5). Вы должны видеть только три потока - основной поток, поток GC и поток финализатора IIRC. Другие потоки, которые вы видите, являются связанными с отладчиком потоками.
Если вы запустили его без прикрепленного отладчика, тем меньше потоков. И это, по-видимому, будет финализатором нити и другими материалами CLR для домашнего хозяйства.
Project + Properties, Debugging, untick "Включить хостинг Visual Studio". Я не могу понять, что он делает. Как только я поставлю галочку в опции "Включенный неуправляемый отладчик кода", чтобы попытаться заглянуть в эти потоки, они больше не запускаются. Нет подсказки. Но я уверен, что это для нашей пользы:)
Попробуйте запустить его без добавления отладчика (Visual Studio) (Ctrl + F5). Вы увидите, что будет меньше (возможно, 3) потоков. Большинство из этих потоков связаны с отладчиком.