Async.OnCancel Yöntemi (F#)
Zaman uyumsuz bir iş akışı içinde kullanmak için kapsamlı, ortak iptal işleyicisi oluşturur.
Ad alanı/modül yolu: Microsoft.FSharp.Control
Derleme: FSharp.Core (FSharp.Core.dll içinde)
// Signature:
static member OnCancel : (unit -> unit) -> Async<IDisposable>
// Usage:
Async.OnCancel (interruption)
Parametreler
Dönüş Değeri
Bırakılmadan önce iptal edilirse özel durumu tetikleyecek bir zaman uyumsuz hesaplama.
Açıklamalar
Örneğin, aşağıdaki kod, zaman uyumsuz bir hesaplama oluşturur Burada, zaman uyumsuz hesaplaması kapsamında yürütülmesi sırasında istediğiniz zaman bir iptal olursa holder, sonra eylem interruption yürütüldüğünde iş parçacığında, işlemi uyguluyor iptali. Bu bir hesaplama zaman uyumsuz olarak bildirilmesini düzenlemek için bir iptal bildirimi, örneğin, bir bayrak ayarı veya bekleyen bir g/Ç eylem kaydı siliniyor oluştuğunu kullanılabilir.
async { use! holder = Async.OnCancel interruption ... }
Örnek
Aşağıdaki kod örneği kullanımını gösterir Async.OnCancel.
// This is a simulated cancellable computation. It checks the token source
// to see whether the cancel signal was received.
let computation (tokenSource:System.Threading.CancellationTokenSource) =
async {
use! cancelHandler = Async.OnCancel(fun () -> printfn "Canceling operation.")
// Async.Sleep checks for cancellation at the end of the sleep interval,
// so loop over many short sleep intervals instead of sleeping
// for a long time.
while true do
do! Async.Sleep(100)
}
let tokenSource1 = new System.Threading.CancellationTokenSource()
let tokenSource2 = new System.Threading.CancellationTokenSource()
Async.Start(computation tokenSource1, tokenSource1.Token)
Async.Start(computation tokenSource2, tokenSource2.Token)
printfn "Started computations."
System.Threading.Thread.Sleep(1000)
printfn "Sending cancellation signal."
tokenSource1.Cancel()
tokenSource2.Cancel()
// Wait for user input to prevent application termination.
System.Console.ReadLine() |> ignore
Çıktı
Platformlar
Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2
Sürüm Bilgisi
F# Çalışma Zamanı
Desteklenir: 2.0, 4.0
Silverlight
Desteklenir: 3
Ayrıca bkz.
Başvuru
Microsoft.FSharp.Control İsim Uzayı (F#)
Değişiklik Geçmişi
Tarih |
Geçmiş |
Nedeni |
---|---|---|
Temmuz 2010 |
Eklenen kod örneği. |
Bilgi geliştirme. |