Есть несколько способов сделать это ... самый простой - это заставить асинхронный метод также выполнить последующую операцию.Другой популярный подход заключается в передаче обратного вызова, т. Е.
void RunFooAsync(..., Action<bool> callback) {
// do some stuff
bool result = ...
if(callback != null) callback(result);
}
Другой подход заключается в создании события (с результатом в данных аргументов события), когда асинхронная операция завершена.
Кроме того, если вы используете TPL, вы можете использовать ContinueWith
:
Task<bool> outerTask = ...;
outerTask.ContinueWith(task =>
{
bool result = task.Result;
// do something with that
});