具有异步签名与无签名的任务

Task with Async signature vs no-signature

我很少把任务搞砸。所以请向我解释一下,这是有签名任务与无签名任务之间的主要区别。 示例

 async Task myTaskAsync();
 vs
 async Task myTask();

如果我在函数结束时不包含 Async 有什么不同吗?

是的,当你关心你的代码设计时,这很重要,例如:

public interface IMyService
{
    Task<int> GetWeightAsync();
    int GetWeight();
}

在这种情况下,您同时支持:异步和非异步版本供此界面的用户使用,因此他们可以决定要选择哪条路径。

C# 被设计为多态的,但在异步的情况下,它只是伪造它的一种方式。如果签名除了 return 值相同,编译器仍然会报错,所以人们决定在末尾添加后缀 'Async'。

关于函数的行为是否添加 "Async" 后缀。

确实关系到客户对您API的看法。

此命名约定被广泛采用,因此您使用它对自己和他人都有好处。

顺便说一句: 如果有问题的 API 已经包含名为 "xxxAsync" 的遗留异步函数(非 TAP),那么建议改用 "xxxTaskAsync"。