私の同僚が私たちのコードに問題を発見しました。何が起こっているかを正確に把握するのに時間がかかりましたが、この単純な例で最もよく説明できます:Task.Run()を使用してコンソールに書き込むことができません
// 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();
}
}
メインスレッドのどこからでもコンソールに書き込むことで、バックグラウンドスレッドもコンソールに書き込むことができますが、なぜこのようなことが起こっているのかを理解することは苦労しています。誰もがメインスレッドからコンソールへの書き込みが、最初のスニペットが達成していないことを説明することはできますか?
失敗したケースで何が起こったのか説明していません。私の箱には、あなたが帰ってくるまで掛けているように見えます。その時点で、それは印刷されます。 –
@JonSkeetはい、それは私が見る動作です – kevinawalker