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

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

概述为什么等待是不允许在最后的块? public async void Fn(){ try { } finally { await Task.Delay(4000); }} 知道有可能手动获取Awaiter public void Fn(){ try { } finally { 为什么等待是不允许在最后的块?
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)

总结

以上是内存溢出为你收集整理的c# – 为什么在finally块中不允许等待?全部内容,希望文章能够帮你解决c# – 为什么在finally块中不允许等待?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1241595.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存