Поделиться через


Метод Async.StartImmediate (F#)

Немедленно запускает асинхронное вычисление в текущем потоке операционной системы.

Пространство имен/путь к модулю: Microsoft.FSharp.Control

Сборка: FSharp.Core (в FSharp.Core.dll)

// Signature:
static member StartImmediate : Async<unit> * CancellationToken option -> unit

// Usage:
Async.StartImmediate (computation)
Async.StartImmediate (computation, cancellationToken = cancellationToken)

Параметры

  • computation
    Тип: Async<unit>

    Выполняемое асинхронное вычисление.

  • cancellationToken
    Тип: CancellationToken

    Необязательный токен отмены для связи с вычислением.Если данный параметр не указан, используется значение по умолчанию.

Заметки

Если токен отмены не указан, используется токен отмены по умолчанию.

Пример

В следующем примере кода показано, как использовать Async.StartImmediate, чтобы начать асинхронное вычисление в текущем потоке.Часто асинхронной операции необходимо обновить пользовательский интерфейс, что всегда должно быть сделано в потоке пользовательского Интерфейса.Когда требуется начать асинхронную операцию с обновления пользовательского интерфейса, рекомендуется выбирать Async.StartImmediate, а не Async.Start, который запускает асинхронную операцию в потоке пула потоков.


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 2008 Server R2

Сведения о версии

Основной версии библиотеки F#

Поддерживается в: 2.0, 4.0, портативное

См. также

Ссылки

Класс Control.Async (F#)

Пространство имен Microsoft.FSharp.Control (F#)