Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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
C# 异步Web服务的嵌套回调_C#_Web Services_Asynchronous_Asynccallback - Fatal编程技术网

C# 异步Web服务的嵌套回调

C# 异步Web服务的嵌套回调,c#,web-services,asynchronous,asynccallback,C#,Web Services,Asynchronous,Asynccallback,我目前正在使用Xamarin C#在iOS应用程序中使用SOAP Web服务。我希望有一个嵌套回调来继续在主UI线程上执行。下面是一个例子: [WebService Method] WSMethod(param A){ //do something } class A { InnerFunction(param A) { ws.BeginWSMethod(A, new AsyncCallback(WSMethodCallback), WebServi

我目前正在使用Xamarin C#在iOS应用程序中使用SOAP Web服务。我希望有一个嵌套回调来继续在主UI线程上执行。下面是一个例子:

[WebService Method]
WSMethod(param A){
     //do something
}

class A
{
    InnerFunction(param A)
    {
         ws.BeginWSMethod(A, new AsyncCallback(WSMethodCallback), WebService);
    }

    WSMethodCallBack(IASyncResult ar)
    {
         //first callback here
         result = ws.EndWSMethod(ar);
    }
}

class B
{
    OuterFunction()
    {
         //define param A..
         InnerFunction(A);

         //nested callback function - to be executed when WSMethodCallback finish
         UpdateUIMethod();
    }
}
WSMethodCallBack完成执行后,如何调用'UpdateUIMethod()'

更新:


UpdateUIMethod是类A的实例方法,应该在相应的实例中调用(不是静态方法)

最简单的方法是在调用
ws.EndWSMethod
后,在
WSMethodCallBack
内部调用
UpdateUIMethod
。您需要将对
updateimethod
的调用封送回UI

我对Xamarin不太熟悉,但我希望您也可以考虑使用一些较新的框架功能,使异步开发更简单,尽管很难知道这是否适合您的情况


从.Net 4.0开始,您可以使用它来简化对遵循BeginXXX/EndXXX模式的异步方法的调用。

我使用了这个任务。ContinueWith可以工作!