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