我正在编写一些新代码并希望使用async编写它并等待,但调用代码当前未用async编写。以异步方式编写新代码并将其称为同步,直到调用代码支持异步为止是正确的吗?在异步中写入新代码但调用同步
或者我应该写代码同步,然后在稍后的日期转换它?这会被视为技术债务吗?
public Result Execute(Paramerters parameters) {
return ExecuteAsync(parameters).Result;
}
public Task<Result> ExecuteAsync(Paramerters parameters) {
...
}
Execute
是在一个接口上,并从一些还不是异步的其他代码调用。创建异步版本并从Execute
调用它是否正确,直到调用Execute
的代码转换为异步? 我的旧代码是用.net 4.5.1编写的,但尚未转换为async。
我强烈建议坚持使用“异步一路下来”的口头禅并立即更新代码。这是一个很好的阅读主题:http://blog.stephencleary.com/2012/07/dont-block-on-async-code.html还要记住,“我们将修复其余的稍后“方法很可能是整个软件开发行业最普遍的错觉。不要完成一半的事情。要么使代码异步或不要。 – David
这就是所谓的“异步同步”并且是反模式。它通常是*一个非常糟糕的主意,并且一些异步同步或异步同步的组合可能*完全死锁* ... –