我需要在MonoTouch中異步進行web服務調用,因爲UIAlertView只在工作完成後才顯示出來。異步方法?
當前碼(僞)
Class LoginviewController
{
void Login(credentials)
{
showAlert("Logging in") ;
bool authenticated = service.Authenticate(Credentials);
}
}
class Service
{
Public bool Authenticate(object Credentials)
{
object[] results = this.Invoke("GetAuth", Credentials)
}
}
我在移動服務的方法來異步模式,配合量由BeginAuthenticate(), EndAuthenticate(), AuthenticateAsync(), OnAuthenticateOperationCompleted()
當然Authenticate()
的身份驗證的過程。
當所有這些都完成了,我需要在其上運行LoginViewController OnAuthenticateCompleted(),所以我會用BeginInvokeOnMainThread(delegate....
這是我卡住。
如何從服務類中執行LoginViewController類實例中的方法OnAuthenticateCompleted()
?
編輯:解決方法:
補充說,在登錄()掛鉤,並稱爲AuthenticateAsync()方法,而不是身份驗證的OnAuthenticateCompleted事件處理程序()。
Class LoginviewController
{
void Login(credentials)
{
showAlert("Logging in") ;
service.AuthenticateCompleted += new GetAuthenticationCompletedEventHandler(OnAuthenticateCompleted);
service.AuthenticateAsync(Credentials);
}
public void OnAuthenticateCompleted(obj sender, GetAuthenticationCompletedEventArgs args)
{
bool authenticated = (bool)args.Results;
//do stuff
hideAlert();
}
}