基于回调异步方法有多个参数awaitabletask [英] callback based async method with multiple parameters to awaitabletask

查看:141
本文介绍了基于回调异步方法有多个参数awaitabletask的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下的code连接到MYOB的SDK

I have the following code to connect to MYOB's SDK

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

其中,

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

我想它转换为使用TaskCompletionSource
像<一个href=\"http://stackoverflow.com/questions/14645973/how-to-make-an-old-style-async-method-awaitable\">this例如

不过我的onComplete有多个参数。
我code那怎么办呢?

however my OnComplete has multiple parameters. How do I code that?

推荐答案

由于在评论中提及

有关Accountright API的 SDK 支持异步/的await即<一个href=\"https://github.com/MYOB-Technology/AccountRight_Live_API_.Net_SDK/blob/master/MYOB.API.SDK/SDK/Services/CompanyFileService.cs#L53\"相对=nofollow> GetRangeAsync

The SDK for Accountright API supports async/await i.e. GetRangeAsync

所以你可以做这样的事情,如果你想/要包裹它需要在TaskCompletionSource

so you can do something like this if you wanted/needed to wrap it in a 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;
}

这篇关于基于回调异步方法有多个参数awaitabletask的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆