【发布时间】:2016-03-04 14:27:24
【问题描述】:
我正在编写一些新代码,并希望使用 async 和 await 来编写它,但调用代码目前不是以 async 编写的。把新代码写成async,然后调用sync,直到调用代码支持async,对吗?
或者我应该编写代码同步,然后在以后转换它?是否会被视为技术债务?
public Result Execute( Paramerters parameters ) {
return ExecuteAsync( parameters ).Result;
}
public Task<Result> ExecuteAsync( Paramerters parameters ) {
...
}
Execute 位于接口上,并从其他尚未异步的代码中调用。创建异步版本并从Execute调用它直到调用Execute的代码转换为异步是否正确?
我的旧代码是用 .net 4.5.1 编写的,但尚未转换为异步。
【问题讨论】:
-
我强烈建议坚持“一直异步”的口头禅并立即更新代码。这是一个很好的阅读主题:blog.stephencleary.com/2012/07/dont-block-on-async-code.html 另外请记住,“我们稍后会修复其余部分”的方法很可能是整个软件开发行业中最普遍的错觉。不要半途而废。使代码异步或不异步。
-
这就是所谓的“异步同步”,是一种反模式。这通常是一个非常糟糕的主意,并且同步异步或异步同步的某些组合可能完全死锁...
标签: c# .net asynchronous technical-debt