0

Matrix xmppClient を使用して WP7 でチャット クライアント アプリをセットアップしています。間違った資格情報 (ユーザー名/パスワード) を指定すると、無効なクロス スレッド アクセス例外がスローされました...以下に示すように Dipatcher.BeginInvoke を使用していますが、それでもその例外が発生します。来る..これを修正するために何をする必要があるか誰か教えてもらえますか?? ありがとう

void xmppClient_OnAuthError(object sender, SaslEventArgs e)
    {           
        Dispatcher.BeginInvoke(() =>
        {
            DisplayEvent("OnAuthError", "authentication failed");
        });
    }

        void DisplayEvent(string evt, string arg1 = null, string arg2 = null)
    {
        var par = new Paragraph();
        par.Inlines.Add(new Run
        {
            Text = evt,
            FontSize = 14,
        });

        if (arg1 != null)
            par.Inlines.Add(new Run
            {
                Text = "\t=>" + arg1,
                FontSize = 14,
            });

        if (arg2 != null)
            par.Inlines.Add(new Run
            {
                Text = "\t=> " + arg2,
                FontSize = 14,
            });

        var rtf = new RichTextBox();
        rtf.Blocks.Add(par);
        stackEvents.Children.Add(rtf);
        ScrollToEnd(scrollEvents);
    }

DisplayEvent メソッドで例外が発生しない

4

1 に答える 1

0

無効なクロススレッドアクセス例外は、通常、UI要素が非UIスレッドからアクセスされるときに発生します。DisplayEventメソッドでは、それが発生している可能性があります。

DisplayEventの最後の2行をディスパッチャーで囲みます

   ...
   rtf.Blocks.Add(par);
   Dispatcher.BeginInvoke(() =>
   {
      stackEvents.Children.Add(rtf);
      ScrollToEnd(scrollEvents);
   }
}
于 2013-02-04T11:29:28.340 に答える