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

Información de versiones

Runtime de F#

Se admite en las versiones: 2.0, 4.0

Silverlight

Se admite en la versión: 3

Vea también

Referencia

Control.Async (Clase de F#)

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

Historial de cambios

Fecha

Historial

Motivo

Julio de 2010

Se ha agregado un ejemplo de código.

Mejora de la información.