Condividi tramite


Metodo Async.StartWithContinuations<'T> (F#)

Esegue un calcolo asincrono, iniziando immediatamente nel thread del sistema operativo corrente. Richiama una delle tre continuazioni al completamento dell'operazione.

Percorso di spazio dei nomi/modulo: 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)

Parametri

  • computation
    Tipo: Async<'T>

    Calcolo asincrono da eseguire.

  • continuation
    Tipo: 'T -> unit

    La funzione chiamata in caso di esecuzione riuscita.

  • exceptionContinuation
    Tipo: exn -> unit

    Funzione richiamata al verificarsi di un'eccezione.

  • cancellationContinuation
    Tipo: OperationCanceledException -> unit

    Funzione richiamata al momento dell'anNullamento.

  • cancellationToken
    Tipo: CancellationToken

    Token di annullamento facoltativo da associare al calcolo. Se questo parametro non viene specificato, verrà utilizzato il valore predefinito.

Note

Se non viene specificato alcun token di annullamento, verrà utilizzato il token di annullamento predefinito.

Esempio

Nell'esempio di codice seguente viene illustrato l'utilizzo di 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)

Piattaforme

Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2.

Informazioni sulla versione

F# Runtime

Supportato in: 2.0, 4.0

Silverlight

Supportato in: 3

Vedere anche

Riferimenti

Classe Control.Async (F#)

Spazio dei nomi Microsoft.FSharp.Control (F#)

Cronologia delle modifiche

Data

Cronologia

Motivo

Luglio 2010

Aggiunto esempio di codice.

Miglioramento delle informazioni.