首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接口任务是同步的,但我需要它返回异步。

接口任务是同步的,但我需要它返回异步。
EN

Stack Overflow用户
提问于 2021-09-28 20:33:56
回答 1查看 60关注 0票数 0

我下载了ShopifySharp项目,并试图通过实现IRequestExecutionPolicy (https://github.com/nozzlegear/ShopifySharp/blob/master/ShopifySharp/Infrastructure/Policies/RetryExecutionPolicy.cs)来制定自己的执行策略。

在示例项目中,没有这样的“未实现错误”。但是,类似的实现将这个"AsyncStateMachine(typeof(SmartRetryExecutionPolicy.d__5<>))“放在方法之前。

据我所知,使方法异步更改签名,因此不实现Run方法。我在这方面不是很有经验,所以我们很感谢你的帮助。

代码语言:javascript
复制
public delegate Task<RequestResult<T>> ExecuteRequestAsync<T>(CloneableRequestMessage request);

public interface IRequestExecutionPolicy
{
    Task<RequestResult<T>> Run<T>(CloneableRequestMessage requestMessage, ExecuteRequestAsync<T> executeRequestAsync, CancellationToken cancellationToken, int? graphqlQueryCost = null);
}
代码语言:javascript
复制
public class LeakyBucketExecutionPolicy : IRequestExecutionPolicy{
    public LeakyBucketExecutionPolicy(){}

    public async Task<RequestResult<T>> Run<T>(CloneableRequestMessage baseRequest, ExecuteRequestAsync<T> executeRequestAsync, CancellationToken cancellationToken, int? graphqlQueryCost = null)
    {
        //retry code
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-29 10:30:52

据我所知,

使方法异步更改了签名。

不,不是的。这正是为什么您永远不会在接口中看到async的原因。

async关键字只是为了让您可以做awaitreturn T而不是return Task<T>。编译器将为您包装它。但是,签名和运行时调用方法的方式都是相同的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69368173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档