基于回调异步方法有多个参数awaitabletask [英] callback based async method with multiple parameters to 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屋!