我正忙于一个当然使用silverlight 的windows phone 应用程序。这意味着调用任何 web 服务都必须异步完成,并且由于这对于防止整个应用程序在等待资源时挂起的最佳实践来说都是很好的,所以我仍然停留在“同步思维方式”中。 ..
因为我现在看到的方式是你最终有两种方法需要处理一个函数,例如:
1)实际调用webservice的方法:
public void myAsyncWebService(DownloadStringCompletedEventHandler callback)
{
//Url to webservice
string servletUrl = "https://deangrobler.com/someService/etc/etc"
//Calls Servlet
WebClient client = new WebClient();
client.DownloadStringCompleted += callback;
client.DownloadStringAsync(new Uri(servletUrl, UriKind.Absolute));
}
2) 以及在数据最终返回时处理数据的方法:
private void serviceReturn(object sender, DownloadStringCompletedEventArgs e)
{
var jsonResponse = e.Result;
//and so on and so forth...
}
因此,不必只创建和调用一个进入 Web 服务的方法,而是获取返回的结果并将其发送回给我,如下所示:
public string mySyncWebService(){
//Calls the webservice
// ...waits for return
//And returns result
}
我必须在一个类中调用 myAsyncWebService,并在调用类中 创建另一个方法来处理 myAsyncWebService 返回的结果。在我看来,只是创建了混乱的代码。使用同步调用,您可以只调用一种方法并完成它。
我只是使用错误的异步调用吗?我的理解错了吗?我需要一些启发,我讨厌做这种混乱的异步调用。它使我的代码过于复杂,可读性简直……地狱。
感谢任何愿意改变我想法的人!