Обновление:
Библиотека FSharp.Core для F # 4.0 теперь включает перегрузку Async.AwaitTask
, которая принимает простое значение Task
. Если вы используете F # 4.0, вам следует использовать эту базовую функцию вместо приведенного ниже кода.
Оригинальный ответ:
Если ваша задача может вызвать исключение, вы, вероятно, также захотите проверить это. например,
let awaitTask (task : Task) =
async {
do! task |> Async.AwaitIAsyncResult |> Async.Ignore
if task.IsFaulted then raise task.Exception
return ()
}