C# InvalidOperationException更新文本块

C# InvalidOperationException更新文本块,c#,wpf,C#,Wpf,我试着通过使用Dispatcher从工作线程向WPF文本块添加一些内容。我使用以下方法: private void AppendLineToChatBox(Inline message) { chatBox.Dispatcher.BeginInvoke(new Action(() => { chatBox.Inlines.Add(message); chatBox.Inlines.Add("\n"); scro

我试着通过使用Dispatcher从工作线程向WPF文本块添加一些内容。我使用以下方法:

private void AppendLineToChatBox(Inline message)
{        
    chatBox.Dispatcher.BeginInvoke(new Action(() =>
    {
        chatBox.Inlines.Add(message);
        chatBox.Inlines.Add("\n");
        scroller.ScrollToBottom();
    }));
}
使用XAML:

<Grid Height="200" Width="300" HorizontalAlignment="Left">
    <ScrollViewer Name ="scroller">
        <TextBlock TextWrapping="Wrap" Background="White" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Name="chatBox" />
    </ScrollViewer>
</Grid>

当我从后台线程调用AppendLineToChatBox()时,仍然会出现以下异常:

System.InvalidOperationException未处理HResult=-2146233079
Message=调用线程无法访问此对象,因为 不同的线程拥有它


正确的方法将不胜感激。

内联类继承自DispatcherObject,这意味着该类创建的任何对象都绑定到创建它们的线程。从代码看,工作线程似乎正在调用AppendLineToChatBox方法,并且工作线程还拥有内联对象


要解决此问题,您需要在UI线程中构造内联对象(例如BeginInvoke中的代码块)

现在在哪一行获得异常?你确定这不是关于
scroller.ScrollToBottom()
?chatBox.Inlines.Add(message)引发的异常。我认为这不是一个重复的问题,因为我已经在使用调度程序。