我的一位同事發現我們的代碼存在問題,需要花費一段時間才能查明發生了什麼,但可以通過以下簡單示例最好地演示:使用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