加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 为什么在finally块中不允许等待?

发布时间:2020-12-15 18:26:55 所属栏目:百科 来源:网络整理
导读:为什么等待是不允许在最后的块? public async void Fn(){ try { } finally { await Task.Delay(4000); }} 知道有可能手动获取Awaiter public void Fn(){ try { } finally { var awaiter = Task.Delay(4000).GetAwaiter(); }} 解决方法 取自: Where can’t
为什么等待是不允许在最后的块?
public async void Fn()
{
    try
    {
    }
    finally
    {
        await Task.Delay(4000);
    }
}

知道有可能手动获取Awaiter

public void Fn()
{
    try
    {
    }
    finally
    {
        var awaiter = Task.Delay(4000).GetAwaiter();
     }
}

解决方法

取自: Where can’t I use “await”?

Inside of a catch or finally block. You can use “await” inside of a
try block,regardless of whether it has associated catch or finally
blocks,but you can’t use it inside of the catch or finally blocks.
Doing so would disrupt the semantics of CLR exception handling.

这在C#6.0中显然不再是真的

取自:A C# 6.0 Language Preview

C# 6.0 does away with this deficiency,and now allows await calls within both catch and finally blocks (they were already supported in try blocks)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读