在我的WP7應用程序我打電話和使用這些方法web服務:問題的異步Web服務響應
在我的網頁cs文件:
public void Page_Loaded(object sender, RoutedEventArgs e)
{
if (NavigationContext.QueryString["val"] == "One")
{
listAgences=JSON.callWSAgence("http://...");
InitializeComponent();
DataContext = this;
}
}
在我的JSON類,我有這些方法:
public List<Agence> callWSAgence(string url)
{
WebClient webClient = new WebClient();
Uri uri = new Uri(url);
webClient.OpenReadAsync(uri);
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(OpenReadCompletedTestAgence);
return listAgences;
}
public void OpenReadCompletedTestAgence(object sender, OpenReadCompletedEventArgs e)
{
StreamReader reader = new System.IO.StreamReader(e.Result);
jsonResultString = reader.ReadToEnd().ToString();
addAgencesToList();
reader.Close();
}
public void addAgencesToList()
{
jsonResultString = json.Substring(5, json.Length - 6);
listAgences = JsonConvert.DeserializeObject<List<Agence>>(json);
}
的問題是,在JSON類的OpenReadCompletedTest方法不正確稱爲後
webClient.OpenReadCompleted += new OpenReadCompletedEventHandler(OpenReadCompletedTestAgence);
所以返回的listAgences是空的。
但後來OpenReadCompletedTest被調用,一切工作都被罰款,但我的視圖已被加載。
我能做些什麼來進行一種同步調用,或者在webservice響應被解析和我的列表被填充後重新加載我的視圖。
我建議使用無擴展退房以下問題以瞭解更多信息:http://msdn.microsoft.com/en-us/devlabs/ee794896這將使異步編程更容易... – 2011-01-02 11:30:20