我们是否总是需要使用async关键字?

7

让我们考虑这段代码:

public async Task TheBestMethodEver1()
{
// code skipped
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
  // code skipped
});

}

public Task TheBestMethodEver2()
{
  // code skipped
  return Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
  {
    // code skipped
  }).AsTask();
}

任何一种方法都可以这样调用:
await TheBestMethodEverX();

这两种方法有什么区别,为什么通常应该使用第一种方法?
2个回答

2
这两种方法有什么区别,为什么我通常应该使用第一种?
第一种方法有一个编译器生成的状态机,并在堆上创建额外的垃圾。因此,第二个方法更受欢迎。
要了解更多信息,请观看经典异步之道视频。

0

如果唯一的await是作为最后一个语句(并且您正在等待任务,而不是其他可等待对象),那么您可以跳过它并直接返回任务。如果将来需要,很容易添加async修饰符。


当然,我可以实现任何方法,但这是一个思想问题。哪种方式更受欢迎,为什么?什么是最佳实践? - A-student
@A-student:你回复的答案表明你的await是多余的,可以省略。但是冗余不是优先选择该解决方案的好理由吗? - Dan Puzey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接