我目前通過深入閱讀C#(第三版),並給出的警告之一是使用GUI線程與task.wait是危險的,因爲它可能導致僵局。但是它不是ThreadPool或Console的問題。我的問題是爲什麼運行task.wait的線程不會死鎖,因此對於下面的代碼(從書中獲取),即使是控制檯應用程序(backround)線程也不會使它捕捉到捕捉,因爲它會死鎖。GUI task.wait vs控制檯或ThreadPool的死鎖
public static void Main(string[] args = null)
{
var source = new CancellationTokenSource();
var task = TestInt(source.Token);
source.CancelAfter(4000);
Console.WriteLine("Status {0}",task.Status);
try
{
task.Wait();
}
catch (AggregateException e)
{
Console.WriteLine("Caught {0}",e.InnerExceptions[0]);
}
Console.WriteLine("Final Status: {0}",task.Status);
Console.ReadKey();
}
public static async Task TestInt(CancellationToken token, double start = 1)
{
await Task.Delay(TimeSpan.FromSeconds(30), token);
}
感謝您
我已經解釋它[這裏](http://stackoverflow.com/a/19543729/2530848) –