Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

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: