为什么需要使此方法异步?

诺里纽斯·卡特纳西

我的代码与此非常相似(我对代码进行了一些简化,以展示我要弄清楚的行为的本质)。

public async System.Threading.Tasks.Task<bool> IsNumberOdd(int numToTest)
{
    if (numToTest % 2 == 0)
    {
        return false;
    }
    else
    {
        return true;
    }
}

如果我离开关async关键字,我得到一个有关无法施展投诉boolTask<bool>我假设这里包含一些语法糖。看一下IL(我对IL不太熟悉),似乎async关键字正在导致任务运行,然后返回值是任务的结果。我理解正确吗?

顺便说一句,如果这是一个骗子,或者有一些讨论此问题的博客文章,请随时指向我并关闭它。我不是要填补我的代表;我试图了解这段代码的情况。

编辑:


对于所有问“为什么这种方法为什么异步?”的人-因为我试图构建一个小的简单代码示例来演示这个问题。我还应该添加一个调用代码示例,但是我试图使代码尽可能的小而简单。

尤瓦尔·伊茨恰科夫(Yuval Itzchakov)

我假设这里有一些语法糖

不完全是“语法糖”。方法标记为,编译器正在生成状态机async这就是为什么您可以在Task<bool>不显式创建Task返回值情况下返回a的原因

如果我不使用async关键字,则会收到有关无法将bool强制转换为的投诉Task<bool>

async修改是什么触发编译器创建的状态机。如果删除它,则需要Task自己创建如果出于任何原因要创建一个Task<T>但实际上正在同步运行,请Task.FromResult成为您的朋友。

我认为没有理由标记此方法async

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么需要使用 await 关键字来调用异步方法

来自分类Dev

为什么异步方法需要返回未来?

来自分类Dev

为什么我们需要使用AsEnumerable()方法?

来自分类Dev

为什么从服务器获取数据时需要使用异步?

来自分类Dev

为什么需要使用 promise 作为异步回调的包装器

来自分类Dev

为什么需要使用minitest / autorun?

来自分类Dev

为什么我需要使用strdup()?

来自分类Dev

为什么我需要使用chroot

来自分类Dev

为什么此迭代器需要使用期限,如何给它一个生命期?

来自分类Dev

要使此代码正常工作需要导入什么?

来自分类Dev

为什么包含异步lambda的方法本身不需要是异步的?

来自分类Dev

为什么我需要使用document.write而不是DOM操作方法?

来自分类Dev

如果AJAX是异步的,为什么还要使用setTimout函数?

来自分类Dev

什么是lvmetad?为什么我要或需要使用它?

来自分类Dev

为什么异步I / O需要缓冲?

来自分类Dev

苹果为什么要使用此“ if let”代码?

来自分类Dev

为什么此结构需要大小值?

来自分类Dev

为什么此代码需要Monad约束?

来自分类Dev

为什么需要解开此变量?

来自分类Dev

为什么此验证使我始终需要?

来自分类Dev

为什么在php中需要此语句

来自分类Dev

为什么此代码需要Monad约束?

来自分类Dev

为什么需要使用type **指向type *?

来自分类常见问题

为什么我们需要使用flatMap?

来自分类Dev

为什么需要使用setTimeout的匿名函数来保留“ this”

来自分类Dev

为什么需要使用self :: core :: ops?

来自分类Dev

用gameTime移动精灵,为什么需要使用+ =?

来自分类Dev

为什么NULL需要使用块进行类型转换?

来自分类Dev

为什么需要使用多个构造函数?

Related 相关文章

热门标签

归档