Async.AsBeginEnd<'Arg,'T> 方法 (F#)

创建三个函数,这些函数可用于实现提供的异步计算的 .NET Framework 异步编程模型 (APM)。

命名空间/模块路径: 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>

    一个函数,它生成要拆分为传统 .NET Framework 异步编程模型的异步计算。

返回值

begin、end 和 cancel 成员的元组。

备注

关于 .NET Framework 异步编程模型的更多信息,请参见 异步编程概述

通常这些函数的开始、结束和取消应发布为带前缀 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 类似于其他 .NET Framework 语言中使用的 API,有助于在计划从其他 .NET Framework 语言中使用的组件中发布异步计算。

平台

Windows 7、Windows Vista SP2、Windows XP SP3、Windows XP x64 SP2、Windows Server 2008 R2、Windows Server 2008 SP2、Windows Server 2003 SP2

版本信息

F# 运行时

受以下版本支持:2.0、4.0

Silverlight

受以下版本支持:3

请参见

参考

Control.Async 类 (F#)

Microsoft.FSharp.Control 命名空间 (F#)

AsyncCallback

IAsyncResult