【发布时间】:2020-05-28 01:09:50
【问题描述】:
我有一个基类,它定义了一个返回任务的抽象方法。
public abstract class BaseClass
{
public abstract Task DoSomething();
}
我可以创建一个以这两种不同方式实现抽象方法的类。
public class Example1 : BaseClass
{
public override Task DoSomething()
{
return Task.CompletedTask;
}
}
或者像这样
public class Example2 : BaseClass
{
public override async Task DoSomething()
{
}
}
请注意,第一个返回一个已完成的任务,第二个包含 async 关键字并且没有返回语句。两者有区别吗?
【问题讨论】:
-
在第一个返回类型是需要的,在第二个视觉工作室说
warning CS1998: This async method lacks 'await' operators and will run synchronously.,如果你没有在那个方法中使用任何等待。更多信息stackoverflow.com/questions/13243975/… -
@daremachine - 感谢您的 cmets。我没有收到警告,但您的解释是有道理的。
-
警告在构建输出中,或者如果您在 VS 中有下划线的方法名称,请在其上获取鼠标指针。很高兴能提供帮助。
-
我会使用前一个例子。它清晰、简单且易于理解。
标签: c# asynchronous task