Udostępnij za pośrednictwem


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

  • computation
    Type: Async<unit>

    Asynchroniczne obliczeń do wykonania.

  • cancellationToken
    Typ: CancellationToken

    Token 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

Zobacz też

Informacje

Control.Async — Klasa (F#)

Microsoft.FSharp.Control — Przestrzeń nazw (F#)