もちろんSilverlightを使用するWindowsPhoneアプリケーションで忙しいです。つまり、Webサービスの呼び出しは非同期で行う必要があります。これは、リソースを待機しているときにアプリ全体がハングしないようにするためのベストプラクティスに関してはすべて適切であり、「同期の考え方」にとらわれています。 ..
私が今見ているのは、1つの関数を処理する必要がある2つのメソッドがあるということです。
1)実際にWebサービスを呼び出すメソッド:
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 によって返される結果を処理する別のメソッドを呼び出し元のクラスに作成する必要があります。ただ、私の意見では、厄介なコードを作成します。同期呼び出しを使用すると、1つのメソッドを呼び出すだけで、それを実行できます。
非同期呼び出しを間違って使用しているだけですか?私の理解は間違っていますか?私はここでいくつかの啓蒙が必要です、私はこの厄介な非同期呼び出しをするのが嫌いです。それは私のコードを複雑にしすぎて、読みやすさはただ...地獄に行きます。
私の心を変えてくれる人に感謝します!