Я новичок в C#. Я узнал, что обычно все потоки переднего плана, пока вы явно не укажете его как «фоновый» поток, используя IsBackGround = true.Background Threads in C#
Некоторые сомнения возникли у меня на голове.
1) В чем преимущество сохранения потока в качестве фоновой нити?
2) При выполнении ниже код:
static void Main(string[] args)
{
Thread worker = new Thread(SayHello);
worker.IsBackground = true;
worker.Start();
Console.WriteLine("Hello From Main");
}
static void SayHello()
{
Console.WriteLine("Hello World");
Console.ReadKey(true);
}
мне нужно использовать worker.Join(), чтобы сохранить основной поток ждать, как программа завершается немедленно. Помимо Join(), можно ли использовать другие методы, чтобы поддерживать главный поток?
Threading in C# - довольно интересная вещь. Я настоятельно рекомендую ClR через книгу C# от Джеффри Рихтера. У него есть объяснение из ядра Windows о том, как потоки работают на C#. К сожалению, многие из этих концепций возвращаются на C++ Win32 threading api. – Spence
У вас будет больше удовольствия с материалами синхронизации потоков. Посмотрите на Систему.Threading.Semaphore, ManualResetEvent, AutoResetEvent, Mutex и Interlocked. Все это очень полезно для работы с потоками. – Spence
Thank Spence Большое спасибо. Я посмотрю на это. – user186973