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


Метод Async.AsBeginEnd<'Arg,'T> (F#)

Создает три функции, которые можно использовать для реализации асинхронной модели программирования (APM) платформы .NET Framework для заданного асинхронного вычисления.

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

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

// Signature:
static member AsBeginEnd : ('Arg -> Async<'T>) -> ('Arg * AsyncCallback * obj -> IAsyncResult) * (IAsyncResult -> 'T) * (IAsyncResult -> unit)

// Usage:
Async.AsBeginEnd (computation)

Параметры

  • computation
    Тип: 'Arg -> Async<'T>

    Функция, создающая асинхронное вычисление, которое требуется разделить для обычной асинхронной модели программирования (APM) платформы .NET Framework.

Возвращаемое значение

Кортеж элементов begin, end и cancel.

Заметки

Дополнительные сведения о модели асинхронного программирования .NET см. в разделе Общие сведения об асинхронном программировании.

Функции начала, конца и отмены должны публиковаться обычным образом как члены с префиксами Begin, End и Cancel и могут использоваться в определении типа в следующем виде.

 let beginAction,endAction,cancelAction =
     Async.AsBeginEnd (fun arg -> computation)
 member x.BeginSomeOperation(arg, callback ,state:obj) =
     beginAction(arg, callback, state)
 member x.EndSomeOperation(iar) = endAction(iar)
 member x.CancelSomeOperation(iar) = cancelAction(iar)

Если асинхронное вычисление не принимает аргументов, AsBeginEnd используется следующим образом.

 let beginAction,endAction,cancelAction =
     Async.AsBeginEnd (fun () -> computation)
 member x.BeginSomeOperation(callback, state:obj) =
     beginAction((), callback, state)
 member x.EndSomeOperation(iar) = endAction(iar)
 member x.CancelSomeOperation(iar) = cancelAction(iar)

Если асинхронное вычисление содержит два аргумента, AsBeginEnd используется следующим образом.

 let beginAction,endAction,cancelAction =
     Async.AsBeginEnd (fun arg1 arg2 -> computation)
 member x.BeginSomeOperation(arg1, arg2, callback, state:obj) =
     beginAction((), callback, state)
 member x.EndSomeOperation(iar) = endAction(iar)
 member x.CancelSomeOperation(iar) = cancelAction(iar)

В каждом случае полученный в результате API аналогичен API, используемым в других языках .NET Framework, и предоставляет удобный способ публикации асинхронных вычислений в компонентах, которые предполагается использовать из других языков .NET Framework.

Платформы

Windows 7, Windows Vista с пакетом обновления 2 (SP2), Windows XP с пакетом обновления 3 (SP3), Windows XP x64 с пакетом обновления 2 (SP2), Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2), Windows Server 2003 с пакетом обновления 2 (SP2)

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

Среда выполнения F#

Поддерживается в версиях 2.0, 4.0

Silverlight

Поддерживается в версии 3

См. также

Ссылки

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

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

AsyncCallback

IAsyncResult