Основанный на обратном вызове асинхронный метод с несколькими параметрами для awaitabletask
У меня есть следующий код для подключения к SDK MYOB
var cfsCloud = new CompanyFileService(_configurationCloud, null, _oAuthKeyService);
cfsCloud.GetRange(OnComplete, OnError);
где
private void OnComplete(HttpStatusCode statusCode, CompanyFile[] companyFiles)
{ // ask for credentials etc }
Я хочу преобразовать это, чтобы использовать TaskCompletionSource, как в этом примере
однако мой OnComplete имеет несколько параметров. Как мне это кодировать?
1 ответ
Решение
Как уже упоминалось в комментарии
SDK для Accountright API поддерживает 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;
}