Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asynchronous 异步FromBeginEnd接口_Asynchronous_F# - Fatal编程技术网

Asynchronous 异步FromBeginEnd接口

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、 内操作(

我有以下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、 内操作(结果: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所做的那样。谢谢