私の同僚が私たちのコードに問題を発見し、何が起こっているのかを正確に突き止めるのにしばらく時間がかかりましたが、次の簡単な例で最もよく実証できます:
// Fails
class Program
{
static void Main(string[] args)
{
Task.Run(() => Console.WriteLine("Hello World"));
Console.ReadKey();
}
}
// Works fine
class Program
{
static void Main(string[] args)
{
Console.Write(String.Empty);
Task.Run(() => Console.WriteLine("Hello World"));
Console.ReadKey();
}
}
これをいじってみると、メイン スレッドからコンソールに書き込むと、バックグラウンド スレッドもコンソールに書き込むことができるようになることは明らかですが、なぜこれが起こっているのかを理解するのに苦労しています。メインスレッドからコンソールへの書き込みで最初のスニペットでは実現できないことを説明できる人はいますか?