1

MVVM Toolkit を使用して WP7 アプリをビルドしていますが、WCF サービスが失敗した場合に MessageBox にエラーを表示しようとしています。

ServiceHelper レイヤーにあるコードは次のとおりです。

        public void GetRandomBibleVerseById(Action<Bible, Exception> callback)
    {
        var client = new StoneFalconClient();

        client.GetRandomBibleVerseByIdCompleted += (s, e) =>
            {
                var userCallback = e.UserState as Action<Bible, Exception>;

                if (userCallback == null)
                {
                    return;
                }

                if (e.Error != null)
                {
                    userCallback(null, e.Error);
                    return;
                }

                userCallback(e.Result, null);
            };

        client.GetRandomBibleVerseByIdAsync(callback);
    }

このようなことをして、サービス呼び出しの周りに try/catch を配置しようとしましたが、エラーが表示されるメッセージ ボックスが表示されません。ここに私の MainViewModel があります:

        public MainViewModel()
    {
        if (IsInDesignMode)
        {
            BibleVerse = LoadDebugVerse();
        }
        else
        {
            try
            {
                ServiceHelper helper = new ServiceHelper();

                helper.GetRandomBibleVerseById((bibleVerse, error) =>
                {
                    Bible displayVerse = LoadDisplayVerse(bibleVerse);
                    BibleVerse = displayVerse;

                    TestamentBookChapterVerse = displayVerse.Testament + ": " + displayVerse.Book + " " + displayVerse.Chapter + ":" + displayVerse.Verse; ;
                });
            }
            catch (Exception ex)
            {
                ErrorMessage = new RelayCommand<String>(m => MessageBox.Show("Error: Click refresh to try again"));
            }
        }
    }

xaml ページの xaml を viewModel にバインドしています。try/caatch を使用するべきではなく、代わりに e.Error を検査するべきだと思いますが、その方法がわかりません。

私は運のない答えを永遠に探していました。

4

1 に答える 1

0

RJ、

クライアントオブジェクト (StoneFalconClient 型) には、ハンドラーを登録できるAsyncCompletedイベントが必要です。OnAsyncCompletedハンドラーでは、EventArgs パラメーターに Error フィールドが必要です

頑張れ
ジム・マッカーディ

于 2011-01-15T06:17:23.963 に答える