我有一个用户控件添加到我的主窗口。主要的代码不断接收TCP消息并相应地与用户控件交互。其中一个由主函数调用的用户控件方法是AddMessage:
internal void AddMessage(Paragraph p)
{
if (txtViewer.Dispatcher.CheckAccess())
{
txtViewer.Document.Blocks.Add(p);
}
else
{
Dispatcher.Invoke(new Action(() =>
{
txtViewer.Document.Blocks.Add(p);
}
));
}
}
在Dispatcher.Invoke内的代码总是会抛出InvalidOperationException异常。我查看了一些类似的问题,大多数情况下是因为没有使用Dispatcher,所以我不知道为什么我的代码无法工作。我猜想我可能使用不正确,或者这可能与在线程之间传递的Paragraph对象有关。
谢谢, Jared
AddMessage
(而不调用Dispatcher.Invoke
)以查看是否存在与线程无关的问题? - as-cii