我正在使用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方法中没有任何异常
答案 0 :(得分:0)
通常在从非UI线程访问UI元素时发生无效的跨线程访问异常。在您的DisplayEvent方法中可能会发生这种情况。
在调度程序中包含DisplayEvent的最后两行
...
rtf.Blocks.Add(par);
Dispatcher.BeginInvoke(() =>
{
stackEvents.Children.Add(rtf);
ScrollToEnd(scrollEvents);
}
}