Async.StartImmediate — Metoda (F#)
Uruchamiane asynchroniczne obliczeń, natychmiast rozpoczynający bieżący wątek systemu operacyjnego.
Ścieżka obszaru nazw/modułu: Microsoft.FSharp.Control
Zestaw: FSharp.Core (w FSharp.Core.dll)
// Signature:
static member StartImmediate : Async<unit> * CancellationToken option -> unit
// Usage:
Async.StartImmediate (computation)
Async.StartImmediate (computation, cancellationToken = cancellationToken)
Parametry
-
Asynchroniczne obliczeń do wykonania.
cancellationToken
Typ: CancellationTokenToken opcjonalne anulowania skojarzenia z obliczeń.Jeśli ten parametr nie jest używany domyślny.
Uwagi
Jeśli nie tokenu anulowania anulowanie domyślnego tokenu jest używany.
Przykład
Poniższy przykład kodu pokazuje, jak używać Async.StartImmediate do uruchomienia w bieżącym wątku asynchronicznego obliczeń.Często asynchroniczna operacja musi zaktualizować interfejs użytkownika, należy zawsze przeprowadzić na wątku interfejsu użytkownika.Podczas operacji asynchronicznych musi rozpocząć przez aktualizowanie interfejsu użytkownika, Async.StartImmediate jest lepszym rozwiązaniem niż Async.Start, który uruchamia asynchronicznych operacji na wątek z puli.
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)
Platformy
Windows 8, Windows 7, Windows Server 2012 Windows Server 2008 R2
Informacje o wersji
F# Core wersji biblioteki
Obsługiwane: 2.0, 4.0, przenośne