Asynchronous 异步FromBeginEnd接口
我有以下C#异步接口:Asynchronous 异步FromBeginEnd接口,asynchronous,f#,Asynchronous,F#,我有以下C#异步接口: x.BeginOperation(a:sting, b:string, c:string, d:string, g:string, ?q:string) : IAsyncResult x.EndOperation(result:IAsyncResult) : IEnumerable<string> x.开始操作(a:sting,b:string,c:string,d:string,g:string,q:string):IAsyncResult x、 内操作(
x.BeginOperation(a:sting, b:string, c:string, d:string, g:string, ?q:string) : IAsyncResult
x.EndOperation(result:IAsyncResult) : IEnumerable<string>
x.开始操作(a:sting,b:string,c:string,d:string,g:string,q:string):IAsyncResult
x、 内操作(结果:IAsyncResult):IEnumerable
我想在我的异步工作流中使用它,并获取
async,假设您的接口声明如下:
type IMyInterface =
abstract member BeginOperation :
(string * string * string * string * string * string option) ->
IAsyncResult
abstract member EndOperation : IAsyncResult -> string seq
let toAsync (x : IMyInterface) =
let beginAction (callback, values : obj) =
match values with
| :? (string * string * string * string * string * string option) as v ->
x.BeginOperation v
| _ -> failwith "Unexpected values"
Async.FromBeginEnd (beginAction, x.EndOperation)
您应该能够创建一个异步IAsyncResult
,这意味着它接受一个泛型类型'a
(在C中,它通常表示为T
)的元组和一个System.Object
,并返回一个IAsyncResult
实例
对于Async.FromBeginEnd
,这是beginAction
所需的签名
接口的操作
方法已具有正确的签名,因此可以不经修改地传入
toAsync
函数的整个签名是IMyInterface->Async
我明白了。这个:?(string*string*string*string*string*string选项)正如v所做的那样。谢谢