Async.OnCancel — Metoda (F#)
Generuje obsługi anulowania w zakresie, wspólnych dla w ramach asynchronicznego przepływu pracy.
Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Control
Zestaw: FSharp.Core (w FSharp.Core.dll)
// Signature:
static member OnCancel : (unit -> unit) -> Async<IDisposable>
// Usage:
Async.OnCancel (interruption)
Parametry
Wartość zwracana
Asynchroniczne obliczeń, powodujące przerwanie, jeśli zostanie anulowana przed usuwany.
Uwagi
Na przykład, poniższy kod generuje asynchronicznego obliczeń w przypadku gdy anulowanie sytuacji w czasie wykonania asynchronicznego obliczeń w zakresie holder, następnie akcji interruption jest wykonywane w wątku, który wykonuje anulowania.To można zorganizować obliczeń asynchronicznie powiadamiane o anulowaniu wystąpiła, na przykład przez ustawienie flagi lub wyrejestrowywanie oczekujące działania We/Wy.
async { use! holder = Async.OnCancel interruption ... }
Przykład
Poniższy kod demonstruje użycie 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
Dane wyjściowe
Platformy
Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2
Informacje o wersji
F# Core wersji biblioteki
Obsługiwane: 2.0, 4.0, przenośne