c# - 异步编写新代码但调用同步

标签 c# .net asynchronous technical-debt

我正在编写一些新代码,并想使用异步和等待来编写它,但调用代码目前不是用异步编写的。以异步方式编写新代码并调用它同步直到调用代码支持异步是否正确?

或者我应该写代码同步然后在以后转换它?它会被视为技术债务吗?

public Result Execute( Paramerters parameters ) {
    return ExecuteAsync( parameters ).Result;
}

public Task<Result> ExecuteAsync( Paramerters parameters ) {
    ...
}

Execute 在一个接口(interface)上,并从其他一些尚未异步的代码中调用。创建异步版本并从 Execute 调用它直到调用 Execute 的代码转换为异步版本是否正确? 我的旧代码是用 .net 4.5.1 编写的,但尚未转换为异步。

最佳答案

http://blogs.msdn.com/b/pfxteam/archive/2012/04/13/10293638.aspx关于为什么要避免这种情况,以及如果不能避免如何缓解这个问题,有一些很好的观点。

但是,

Or should I write the code sync and then convert it at a later date?

这可能更容易,并且确实完全摆脱了这个问题。

And would it be considered technical debt?

不过,根据定义,它是:

  1. 无论如何,您可能需要在未来很长一段时间内进行同步调用,以支持这种情况,因此您已经有了技术债务,您只是在处理它。

  2. 确实已经有了技术债务。你说,“但是调用代码目前不是异步编写的”。好了,那是你的债,已经存在了。

  3. 如果同步和异步版本相互镜像(非常常见)并且您将这些方法放在它们的双胞胎旁边,那么可以很容易地同时对每个方法进行大部分更改。

    <

关于c# - 异步编写新代码但调用同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35798480/

相关文章:

c# - 在使用 MySQL 数据库生成模型期间检测到 EF6 验证错误

c# - "INPUT"由于其保护级别而无法访问

c# - 如何在代码而不是配置中创建 WCF EndPointBehaviors?

c# - 如何在 .net 中为谷歌云存储注册 url

c# - 不同分辨率下 graphics.MeasureString 的奇怪行为

javascript - 了解 Node.js/JavaScript 中什么是同步、什么是异步

Perl:基于事件和基于并行的风格 - 何时选择一种?

C#:动态用户控制回发返回 true,即使 UC 是第一次加载

c# - .NET 项目引用 : How to reference a dll via a referenced project?

c# - 如何创建一个在超时后重新发送 HTTP 请求的 Observable 序列?