Async.StartImmediate-Methode (F#)
Führt eine asynchrone Berechnung aus, die sofort im aktuellen Betriebssystemthread beginnt.
Namespace/Modulpfad: 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)
Parameter
-
Die auszuführende asynchrone Berechnung.
cancellationToken
Typ: CancellationTokenDas optionale Abbruchtoken, das der Berechnung zugeordnet werden soll.Wenn dieser Parameter nicht bereitgestellt wird, wird der Standardwert verwendet.
Hinweise
Wenn kein Abbruchtoken bereitgestellt wird, wird das Standardabbruchtoken verwendet.
Beispiel
Im folgenden Codebeispiel wird veranschaulicht, wie mit Async.StartImmediate eine asynchrone Berechnung im aktuellen Thread gestartet wird.Häufig muss ein asynchroner Vorgang die UI aktualisieren, was immer auf dem UI-Thread ausgeführt werden sollte.Wenn der asynchrone Vorgang mit der Aktualisierung der UI beginnen muss, ist Async.StartImmediate eine bessere Option als Async.Start, wodurch der asynchrone Vorgang für einen Thread des Threadpools gestartet wird.
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)
Plattformen
Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2
Versionsinformationen
F#-Kern-Bibliotheks-Versionen
Unterstützt in: 2,0, 4,0, portablen