您显然知道async会有一些接口方法,例如将从磁盘读取的实现,您可以轻松决定使用Task。还有可能使用的接口方法async,您也可以使它们返回Task。
我不禁看到Task作为一个实现细节,我很犹豫,把Task我的接口时,我不知道,如果实施将async/将使用async的方法。如果我决定不使用Task,则async在需要时不能使用实现方法。
尽管根据实现的要求调整合同感觉很奇怪,但这是我要做的。这是正确的方法吗?
这是正确的方法吗?
是。仅Task当您知道有时会有异步的机会时使用。
这仍然给您留下了机会,因为接口不需要使用async- 接口只能要求Taskor 的返回类型Task<T>。
如果最终不需要执行任何异步操作,则可以使用Task.FromResult()返回Task带有值的完成值。例如:
protected override Task<int> SomeMethod() {
return Task.FromResult(1);
}
Run Code Online (Sandbox Code Playgroud)
或者,Task.CompletedTask如果没有返回值。
否则,如果您未指定Task返回类型,而要异步执行操作,则有两个选择:
async void(如果方法返回void),这可能会导致其他并发症。Task在不需要异步运行的情况下,所有这些都比返回完成的方法更糟糕。