0

我有以下代码连接到 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 有多个参数。我该如何编码?

4

1 回答 1

2

正如评论中提到的

Accountright 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;
}
于 2015-09-02T01:25:07.117 回答