基于回调的异步方法,有多个参数到awaitabletask

本文关键字:参数 awaitabletask 异步方法 于回调 回调 | 更新日期: 2023-09-27 18:10:49

我有以下代码连接到MYOB的SDK

    var cfsCloud = new CompanyFileService(_configurationCloud, null, _oAuthKeyService);
    cfsCloud.GetRange(OnComplete, OnError);

,

private  void OnComplete(HttpStatusCode statusCode, CompanyFile[] companyFiles)
    {  // ask for credentials etc }

我想将其转换为使用TaskCompletionSource像下面这个例子

然而我的OnComplete有多个参数。我该怎么编码呢?

基于回调的异步方法,有多个参数到awaitabletask

如评论

所述

account API的SDK支持async/await,即GetRangeAsync

所以你可以这样做如果你想/需要在TaskCompletionSource

中包装它
static Task<CompanyFile[]> DoWork()
{
    var tcs = new TaskCompletionSource<CompanyFile[]>();
    Task.Run(async () =>
    {
        var cfsCloud = new CompanyFileService(_configurationCloud, null, _oAuthKeyService);
        var files = await cfsCloud.GetRangeAsync();
        tcs.SetResult(files);
    });
    return tcs.Task;
}