Async.OnCancel (Método de F#)
Genera un controlador de cancelación cooperativa con ámbito para su uso en un flujo de trabajo asincrónico.
Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Control
Ensamblado: FSharp.Core (en FSharp.Core.dll)
// Signature:
static member OnCancel : (unit -> unit) -> Async<IDisposable>
// Usage:
Async.OnCancel (interruption)
Parámetros
Valor devuelto
Cálculo asincrónico que desencadena la interrupción si se cancela antes de que se elimine.
Comentarios
Por ejemplo, el código siguiente genera un cálculo asincrónico en el que, si se produce una cancelación durante la ejecución de dicho cálculo en el ámbito de holder, se ejecutará la acción interruption en el subproceso que realiza la cancelación.Se puede usar para notificar a un cálculo de forma asincrónica que se ha producido una cancelación; por ejemplo, estableciendo una marca o anulando el registro de una acción de E/S pendiente.
async { use! holder = Async.OnCancel interruption ... }
Ejemplo
En el ejemplo de código siguiente, se muestra el uso de 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
Output
Plataformas
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Información de versiones
Versiones de la biblioteca básica de F#
Se admite en: 2.0, 4.0, portables