Async.StartWithContinuations<'T>, méthode (F#)
Exécute un calcul asynchrone, en commençant immédiatement sur le thread du système d'exploitation actuel.Appelle l'une des trois continuations une fois l'opération terminée.
Espace de noms/Chemin du module : Microsoft.FSharp.Control
Assembly : FSharp.Core (in FSharp.Core.dll)
// Signature:
static member StartWithContinuations : Async<'T> * ('T -> unit) * (exn -> unit) * (OperationCanceledException -> unit) * ?CancellationToken -> unit
// Usage:
Async.StartWithContinuations (computation, continuation, exceptionContinuation, cancellationContinuation)
Async.StartWithContinuations (computation, continuation, exceptionContinuation, cancellationContinuation, cancellationToken = cancellationToken)
Paramètres
computation
Type : Async<'T>Calcul asynchrone à exécuter.
continuation
Type : 'T -> unitFonction appelée en cas de réussite.
exceptionContinuation
Type : exn -> unitFonction appelée en cas d'exception.
cancellationContinuation
Type : OperationCanceledException -> unitéFonction appelée en cas d'annulation.
cancellationToken
Type : CancellationTokenLe jeton d'annulation facultatif à associer au calcul.La valeur par défaut est utilisée si ce paramètre n'est pas fourni.
Notes
Si aucun jeton d'annulation n'est fourni, le jeton d'annulation par défaut est utilisé.
Exemple
L'exemple de code suivant illustre l'utilisation de Async.StartWithContinuations.
open System.Windows.Forms
let bufferData = Array.zeroCreate<byte> 100000000
let async1 (label:System.Windows.Forms.Label) filename =
Async.StartWithContinuations(
async {
label.Text <- "Operation started."
use outputFile = System.IO.File.Create(filename)
do! outputFile.AsyncWrite(bufferData)
},
(fun _ -> label.Text <- "Operation completed."),
(fun _ -> label.Text <- "Operation failed."),
(fun _ -> label.Text <- "Operation canceled."))
let form = new Form(Text = "Test Form")
let button1 = new Button(Text = "Start")
let button2 = new Button(Text = "Start Invalid", Top = button1.Height + 10)
let button3 = new Button(Text = "Cancel", Top = 2 * button1.Height + 20)
let label1 = new Label(Text = "", Width = 200, Top = 3 * button1.Height + 30)
form.Controls.AddRange [| button1; button2; button3; label1 |]
button1.Click.Add(fun args -> async1 label1 "longoutput.dat")
// Try an invalid filename to test the error case.
button2.Click.Add(fun args -> async1 label1 "|invalid.dat")
button3.Click.Add(fun args -> Async.CancelDefaultToken())
Application.Run(form)
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