【发布时间】:2015-07-05 08:16:36
【问题描述】:
为什么 await 不允许在 finally 块中?
public async void Fn()
{
try
{
}
finally
{
await Task.Delay(4000);
}
}
知道可以手动获取Awaiter
public void Fn()
{
try
{
}
finally
{
var awaiter = Task.Delay(4000).GetAwaiter();
}
}
【问题讨论】:
-
您是否阅读过 Eric Lippert 关于 finally 块中没有收益的博客文章?许多相同的点适用:blogs.msdn.com/b/ericlippert/archive/2009/07/16/…
-
这里只是猜测:可能是因为 try...finally 和 await 发生在不同的编译器步骤中,它们的组合不好?
标签: c# async-await c#-5.0