【发布时间】:2014-10-05 03:26:26
【问题描述】:
我有一个不返回任何内容的任务。您不能对此类任务执行 Async.AwaitTask,因此您需要改为执行 Async.AwaitIAsyncTask。不幸的是,这似乎只是吞噬了底层任务抛出的任何异常:-
TaskFactory().StartNew(Action(fun _ -> failwith "oops"))
|> Async.AwaitIAsyncResult
|> Async.Ignore
|> Async.RunSynchronously
// val it : unit = ()
另一方面,AwaitTask 正确地级联异常:-
TaskFactory().StartNew(fun _ -> failwith "oops"
5)
|> Async.AwaitTask
|> Async.Ignore
|> Async.RunSynchronously
// POP!
将常规(非通用)任务视为异步但仍会传播异常的最佳方法是什么?
【问题讨论】:
标签: exception-handling f# task-parallel-library f#-async