我編寫了一個程序來檢查我是否理解異步等待概念。異步並等待線程問題
static void Main(string[] args)
{
Run2().Wait();
}
static async Task DoAsyncWork()
{
await Task.Delay(2000);
}
static async Task Run2()
{
var tid = Thread.CurrentThread.ManagedThreadId;
await DoAsyncWork();
Console.WriteLine(tid == Thread.CurrentThread.ManagedThreadId);
}
我有點迷惑,會有什麼打印?
我認爲我們不能保證什麼都會打印
我Explantion: 當await DoAsyncWork
是調用控件回到主菜單。在DoAsyncWork
之後 完成控制返回並在等待之後繼續代碼的其餘部分。 其餘的代碼可以運行,我們沒有關於巫婆線程運行此代碼的保證。
其實: 我運行這段代碼很多時間,並得到False
打印。
你打算問同樣的問題多少次? http://stackoverflow.com/questions/40577858/async-await-thread-expected – Jim
*我們沒有關於巫婆線程運行此代碼的保證。*如果'await'將安排繼續而不是繼續(因爲它會做會看到已經完成的任務),那麼我們保證繼續將在'ThreadPool'線程之一運行。和以前一樣,它不使用ThreadPool線程,它保證線程不同。 – PetSerAl
你真的應該停止反覆詢問同一個問題。更好地閱讀這篇文章,而不是:http://blog.stephencleary.com/2012/02/async-and-await.html – VMAtm