2013-09-07 60 views
6

Tôi có một tính async như sau (xem ý kiến ​​inline):Tôi có thể kiểm tra rõ ràng việc hủy/chấm dứt tính toán không đồng bộ không?

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 
} 

Để buộc một tấm séc hủy/chấm dứt toàn bộ tính async trước phần tính toán "bình thường" được đạt tới, tôi chèn một cách hiệu quả no-op do! Async.Sleep(1) ngay sau do! Async.Sleep(100). Có cách nào sạch hơn để làm việc này không? Thậm chí có thể giống như do! Async.Nop.

Trả lời

5

Làm thế nào về một cái gì đó như thế này:

let nop = async.Return() 

Sau đó, bạn có thể sử dụng nó như:

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

Perfect, hoạt động tuyệt vời! –