次のような非同期計算があります (インライン コメントを参照)。
async {
//...
do! Async.Sleep(100) //cancellation may happen during sleep
//... but isn't checked at the end of the sleep, so regular, non-async computations are executed here
}
「通常の」計算部分に到達する前にキャンセル チェックを強制するか、非同期計算全体を終了させるために、 のdo! Async.Sleep(1)
直後に効果的な no-op を挿入しdo! Async.Sleep(100)
ます。これを行うためのよりクリーンな方法はありますか?のようなものさえあるかもしれませんdo! Async.Nop
。