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 -> unitLa funzione chiamata in caso di esecuzione riuscita.
exceptionContinuation
Tipo: exn -> unitFunzione richiamata al verificarsi di un'eccezione.
cancellationContinuation
Tipo: OperationCanceledException -> unitFunzione richiamata al momento dell'anNullamento.
cancellationToken
Tipo: CancellationTokenToken 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 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Informazioni sulla versione
Versioni della libreria di base F#
Supportato in: 2,0, 4,0, portabile