MSDN對此警告有很好的描述:Compiler Warning (level 1) CS4014。從它的好報價將是:
在大多數情況下,這種行爲是不是你所期望的。
我認爲這個警告存在的主要原因是async/await並不是真的很明顯,開發人員通常會犯下如下所述的錯誤。
比如你有一個方法,它做一些重幾秒鐘:
public int DoSomething()
{
int sum = 0;
for (int i = 0; i < 10; i++)
{
sum += i;
Thread.Sleep(1000);
}
return sum;
}
你聽說過async
和await
的地方,你想嘗試一下。這是人們經常認爲他們(不經常也許,但我認爲這是它是如何工作之前,我閱讀更多的文檔,所以我們可以指望至少我)移動的一切背景:
public async Task<int> DoSomething()
{
int sum = 0;
for (int i = 0; i < 10; i++)
{
sum += i;
Thread.Sleep(1000);
}
return sum;
}
你認爲這個問題是解決了,但警告,告訴你,沒有await
你不應該使用async
,因爲它只是什麼都不做,你的所有代碼將同步運行,與async
最後一個示例是類似於下面的代碼:
public Task<int> DoSomething()
{
int sum = 0;
for (int i = 0; i < 10; i++)
{
sum += i;
Thread.Sleep(1000);
}
return Task.Result<int>(sum);
}
如果你在同一個環境中做所有事情,這就是所謂的m ethod。
所以這個警告的主要原因我想讓人們知道,他們可能使用async
錯誤,這是閱讀文檔的時候。
是不是[問 - 之前回答](http:// stackoverflow。com/questions/12016567/using-async-without-await)幾次? – 2013-04-11 10:05:11