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