WPF Invoke和MethodInvoker

时间:2017-07-22 10:52:40

标签: c# wpf

我的应用程序中有一个错误,程序崩溃是因为一个对象的多个线程。因为我是C#的新手并且已经在学习它。我对Invokes等并不熟悉。

以下是导致我崩溃的原因:

private void AppendText(string text)
{
    this.Invoke(new MethodInvoker(delegate
    {
        this.richTextBox.AppendText(text + Environment.NewLine);
    }));
}

UpdateProcess.OutputDataReceived += (s, e) => richTextBox.AppendText(e.Data);

但WPF不知道这个(我以前从未在WPF中使用过Invoke,因此我不知道如何在WPF中编写它也许你可以将我链接到一个网站?)

1 个答案:

答案 0 :(得分:2)

在WPF中有Dispatcher类,它允许您从非UI线程更新UI:

private void AppendText(string text)
{        
    Dispatcher.BeginInvoke(() =>
    {
        this.richTextBox.AppendText(text + Environment.NewLine);
    });
}