Async.OnCancel, méthode (F#)
Génère un gestionnaire d'annulation coopérative dont la portée est limitée au sein d'un flux de travail asynchrone.
Espace de noms/Chemin du module : Microsoft.FSharp.Control
Assembly : FSharp.Core (in FSharp.Core.dll)
// Signature:
static member OnCancel : (unit -> unit) -> Async<IDisposable>
// Usage:
Async.OnCancel (interruption)
Paramètres
Valeur de retour
Calcul asynchrone qui déclenche l'interruption s'il est annulé avant d'être supprimé.
Notes
Par exemple, le code suivant génère un calcul asynchrone pour lequel, si une annulation survient à tout moment pendant l'exécution du calcul asynchrone dans la portée de holder, puis l'interruption d'action est exécutée sur le thread qui exécute l'annulation. Cela peut être utilisé pour faire en sorte qu'un calcul soit notifié de manière asynchrone de la survenue d'une annulation, par exemple, en définissant un indicateur ou en désenregistrant une action E/S en attente.
async { use! holder = Async.OnCancel interruption ... }
Exemple
L'exemple de code suivant illustre l'utilisation 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
Sortie
Plateformes
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informations de version
Versions de bibliothèque principale F#
Prise en charge dans : 2,0, 4,0, portables