我目前正在使用Xamarin C#在我的iOS应用程序中使用SOAP Web Service。我希望有一个嵌套的回调来继续在主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类的实例方法,应该在相应的实例中调用(不是静态方法)
答案 0 :(得分:1)
最简单的方法是在调用UpdateUIMethod
后在WSMethodCallBack
内调用ws.EndWSMethod
。您需要将对UpdateUIMethod
的调用封送回UI。
我并不熟悉Xamarin,但我希望你也可以使用一些新的框架功能,使异步开发变得更简单,尽管很难知道这是否适合你的情况。
从.Net 4.0开始,您可以使用TaskFactory.FromAsync来简化对BeginXXX / EndXXX模式之后的异步方法的调用。