我有一个函数可以异步执行一些操作,但不公开异步,而是在完成时调用带有结果的回调。我想把它变成异步的,并想出了这段代码,但似乎不太正确。有什么更好的方法吗?
async {
let ev = Event<_>()
someAsyncExternalCodeThatWillCallTheCallbackWhenDone(fun value -> ev.Trigger value)
let! value = Async.AwaitEvent(ev.Publish)
return value
}
在这种情况下使用 Observable 或 ManualResetEvent 代替 Event 有什么好处?