Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

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)

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.

Se non viene specificato alcun token di annullamento, viene utilizzato il token di annullamento predefinito.

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)


Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Versioni della libreria di base F#

Supportato in: 2,0, 4,0, portabile

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft