Compartir a través de


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

    Función llamada si se realiza correctamente.

  • exceptionContinuation
    Tipo: exn -> unit

    Función llamada en la excepción.

  • cancellationContinuation
    Tipo: OperationCanceledException -> unit

    Función llamada en la cancelación.

  • cancellationToken
    Tipo: CancellationToken

    Token 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

Vea también

Referencia

Control.Async (Clase de F#)

Microsoft.FSharp.Control (Espacio de nombres de F#)