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 方法中可能正在发生这种情况。

在 Dispatcher 中附上 DisplayEvent 的最后 2 行

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