2013-09-07 18 views
6

Iは、以下のように非同期演算(インラインコメントを参照)を有する「通常の」演算部に到達する前に、全体の非同期計算を終了/取り消しの確認を強制するために非同期計算のキャンセル/終了を明示的にチェックできますか?

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(100)の直後にはノーオペレーターdo! Async.Sleep(1)があります。これを行うためのよりクリーンな方法がありますか?おそらくdo! Async.Nopのようなものです。

答えて

5

どのようにこのようなものについて:

let nop = async.Return() 

次にあなたが好きそれを使用することができます:

async { 
    // ... 
    do! Async.Sleep 100 
    do! nop 
} 
+0

パーフェクト、素晴らしい作品! –

関連する問題