Предположим, у меня есть объект SomeObj
, который выполняет асинхронную операцию, которую он реализовал как событие, возвращающее часть данных.
У меня может быть код, который выглядит следующим образом:
private void MyFunc1(Func<int> callback)
{
SomeObj obj = SomeObj.GetSomeObj();
obj.onAsyncComplete += callback;
}
Таким образом, в этой реализации обратный вызов используется для асинхронного приема результирующих данных (int
), возвращаемых SomeObj.onAsyncComplete
.
Я бы хотел переместить этот гипотетический пример к использованию async
и await
:
private async int MyFunc1()
{
SomeObj obj = SomeObj.GetSomeObj();
Task<int> asyncCompleteTask = /* something with obj.onAsyncComplete */
await asyncCompleteTask;
return asyncCompleteTask.Result;
}
Как бы я совершил sh что-то подобное? Цель состоит в том, чтобы иметь возможность await
получить int
результат, пройденный событием onAsyncComplete
. Предположим, что SomeObj
нельзя изменить.