【发布时间】:2017-06-06 17:06:22
【问题描述】:
this answer 的作者 Matías Fidemraizer 在解决有关使用 async/await 的问题时,即“所有方法都应该返回 Task 吗?”声称,即使您的方法目前只执行同步操作,它仍然应该返回一个任务,因此如果您稍后让它执行异步操作,“您可以将其转换为实际的异步操作而不会影响整个代码库”。这是有道理的,但如果我真的在等待什么,我必须在方法签名中添加async。所以我们说的是从:
public Task WhateverAsync()
{
return Task.FromResult(true);
}
到
public async Task WhateverAsync()
{
return await AwaitableSomething();
}
在方法签名中添加async 是一项重大更改吗?
【问题讨论】:
-
你能简单地返回
AwaitableSomething,让调用者可以等待吗? // 还是把函数体包装成Task.Run(async () => { ... });? // 所有方法我都用过了,包括在函数定义中加上async,有兴趣看看大佬们怎么说。 -
您专门链接到回答您问题的帖子,那么您为什么要问这个问题?
-
它没有回答我的问题。这只是一个声明。
-
@KDecker 为什么你会安排一个线程池线程来启动你的异步操作,你为什么要将异步操作包装在一个毫无意义的异步 lambda 中?所有这些都只会毫无意义地增加开销。
-
短语“非常具体”意味着它直接解决了重大更改。你能告诉我它是在哪里做的吗?我的眼睛开始疼了,我的浏览器的“查找”功能也无济于事。所以也许我在问答案是否正确。所以呢?不过,很高兴看到您的 cmets 并没有缺少他们通常的贬义“我比所有人都聪明”。
标签: c# .net asynchronous async-await