私は非同期的にいくつかのことを行う関数を持っていますが、非同期を公開せず、代わりに終了時に結果でコールバックを呼び出します。私はそれを非同期に変えたいと思っていて、このコードを思いつきましたが、まったく正しくないようです。それを行うより良い方法はありますか?
async {
let ev = Event<_>()
someAsyncExternalCodeThatWillCallTheCallbackWhenDone(fun value -> ev.Trigger value)
let! value = Async.AwaitEvent(ev.Publish)
return value
}
このシナリオで Event の代わりに Observable または ManualResetEvent を使用する利点はありますか?