Condividi tramite


Metodo Async.StartImmediate (F#)

Esegue un calcolo asincrono, iniziando immediatamente nel thread del sistema operativo corrente.

Percorso di spazio dei nomi/modulo: Microsoft.FSharp.Control

Assembly: FSharp.Core (in FSharp.Core.dll)

// Signature:
static member StartImmediate : Async<unit> * CancellationToken option -> unit

// Usage:
Async.StartImmediate (computation)
Async.StartImmediate (computation, cancellationToken = cancellationToken)

Parametri

  • computation
    Tipo: Async<unit>

    Calcolo asincrono da eseguire.

  • 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 riportato di seguito viene illustrato come utilizzare Async.StartImmediate per avviare un calcolo asincrono nel thread corrente. Spesso, un'operazione asincrona deve aggiornare l'interfaccia utente, cosa che deve essere sempre eseguita sul thread dell'interfaccia utente. Quando l'operazione asincrona deve iniziare dall'aggiornamento dell'interfaccia utente, Async.StartImmediate è una scelta migliore rispetto a Async.Start, che avvia l'operazione asincrona in un thread del pool di thread.


open System.Windows.Forms

let bufferData = Array.zeroCreate<byte> 100000000

let async1 (button : Button) =
     async {
       button.Text <- "Busy"
       button.Enabled <- false
       let context = System.Threading.SynchronizationContext.Current
       do! Async.SwitchToThreadPool()
       use outputFile = System.IO.File.Create("longoutput.dat")
       do! outputFile.AsyncWrite(bufferData)
       do! Async.SwitchToContext(context)
       button.Text <- "Start"
       button.Enabled <- true
     }


let form = new Form(Text = "Test Form")
let button = new Button(Text = "Start")
form.Controls.Add(button)
button.Click.Add(fun args -> Async.StartImmediate(async1 button))
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

Agosto 2010

Esempio di codice migliorato.

Miglioramento delle informazioni.