0

サービスに接続してJSONデータを消費するアプリを開発しています。消費はうまく機能しますが (JSON.net はうまくいきます)、どこで例外エラーをキャッチして単純な MessageBox を表示すればよいのでしょうか? いくつかの場所で試しましたが、まだアプリが閉じています。または、エラータグを含むjson応答に基づいて行う必要がありますか? 通常のエラー処理の方が簡単だと思いますが、今は頭に空白があります..

コードは以下のとおりです。

private void LoginLoginButton_Click(object sender, System.EventArgs e)
        {
            ((ApplicationBarIconButton)ApplicationBar.Buttons[0]).IsEnabled = false;
            ProgressOverlay.Show();
            GenerateLoginString();
            var w = new SharpGIS.GZipWebClient();

            Observable.FromEvent<DownloadStringCompletedEventArgs>(w, "DownloadStringCompleted")
              .Subscribe(r =>
              {

                  var settings = IsolatedStorageSettings.ApplicationSettings;


                  var deserializedRootObject = JsonConvert.DeserializeObject<RootObject>(r.EventArgs.Result);

                  UserSettings us = new UserSettings()
                  {


                          first_name = deserializedRootObject.user.first_name,
                          last_name = deserializedRootObject.user.last_name,
                          user_id = deserializedRootObject.user_id,

                    };
                    settings.Add("UserSettings", us);
                    settings.Save();
              });
            w.DownloadStringAsync(new Uri(UserUri));
            w.DownloadStringCompleted += new DownloadStringCompletedEventHandler(w_DownloadStringCompleted);

        }

        void w_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
                NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        }
4

2 に答える 2

0

Web クライアントの呼び出しで発生する例外をキャッチしたい場合は、 のErrorプロパティにある必要がありますDownloadStringCompletedEventArgs

void w_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
    if(e.Error != null)
    {
        MessageBox.Show("An error occurred!");
    }
    else
    {
        NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
    }
}
于 2012-06-19T10:18:55.113 に答える
0

解決しました!

この場合、try and catch を使用しました。完璧に動作します:)

于 2012-06-20T10:57:43.473 に答える