Async.StartWithContinuations<'T> (Método de F#)
Ejecuta un cálculo asincrónico y comienza inmediatamente en el subproceso actual del sistema operativo. Llama a una de las tres continuaciones cuando se completa la operación.
Espacio de nombres/Ruta de acceso del módulo: Microsoft.FSharp.Control
Ensamblado: FSharp.Core (en 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)
Parámetros
computation
Tipo: Async<'T>Cálculo asincrónico que se va a ejecutar.
continuation
Tipo: 'T -> unitFunción llamada si se realiza correctamente.
exceptionContinuation
Tipo: exn -> unitFunción llamada en la excepción.
cancellationContinuation
Tipo: OperationCanceledException -> unitFunción llamada en la cancelación.
cancellationToken
Tipo: CancellationTokenToken de cancelación opcional que se va a asociar al cálculo. Si no se proporciona este parámetro, se usará el valor predeterminado.
Comentarios
Si no se proporciona ningún token de cancelación, se usará el token de cancelación predeterminado.
Ejemplo
En el siguiente ejemplo de código, se muestra el uso 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)
Plataformas
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Información de versiones
Versiones de la biblioteca básica de F#
Se admite en: 2.0, 4.0, portables