首页 > 解决方案 > 使用管道时一直异步

问题描述

如果我有一个使用管道的应用程序,该管道具有许多要foreach在所有阶段上执行的阶段并调用:

CanExecute
Execute

界面是这样的:

public interface IService
{
    bool CanExecute(IContext subject);

    IContext Execute(IContext subject);
}

它基本上接受一个上下文并返回一个它变得更丰富的上下文。

在其中一个阶段Execute方法中,我需要调用服务,并且想要执行异步操作。所以现在Execute方法需要更改为例如

Task<IContext> ExecuteAsync(IContext subject);

用于await调用服务。

所有其他阶段都没有异步代码,但现在需要更改,因为最佳实践是“一路异步”。

引入异步代码时必须进行这些更改是否正常?

标签: c#async-awaittask-parallel-librarydefault-interface-memberswitch-expression

解决方案


引入异步代码时必须进行这些更改是否正常?

当您更改任何方法的签名时,必须进行更改是正常的。如果您想重命名它并更改返回类型,那么是的,调用该方法的任何地方都必须更改。

改变它们的最好方法是使它们也异步,一直到链上。


推荐阅读