Partager via


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 -> unit

    Fonction appelée en cas de réussite.

  • exceptionContinuation
    Type : exn -> unit

    Fonction appelée en cas d'exception.

  • cancellationContinuation
    Type : OperationCanceledException -> unité

    Fonction appelée en cas d'annulation.

  • cancellationToken
    Type : CancellationToken

    Le 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 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Informations de version

Runtime F#

Pris en charge dans : 2.0, 4.0

Silverlight

Prise en charge dans : 3

Voir aussi

Référence

Control.Async, classe (F#)

Microsoft.FSharp.Control, espace de noms (F#)

Historique des modifications

Date

Historique

Motif

Juillet 2010

Ajout d'un exemple de code

Améliorations apportées aux informations.