从事件处理程序更新Rich Text Box

时间:2017-04-12 18:53:38

标签: c# wpf

我正在尝试在邮件到达时从事件处理程序更新Rich Text Box。由于某种原因,富文本框仅在所有消息到达时才更新。

我正在使用的代码:

    private void OutputMessageToLogWindow(string message)
    {




        Application.Current.Dispatcher.BeginInvoke(new Action(() =>
        {
            outputRichTxtBox.AppendText(message);
            test.Text = message;
        }));
    }

1 个答案:

答案 0 :(得分:1)

我认为您的代码不是线程安全的,如果是并发消息,可能会通过同时执行以下行来更新某些消息:

var a = 3;
function printStuff(){
console.log(a+1);
console.log(a/3);
console.log(a*2);
}
printStuff();

为了使其成为线程安全的,我建议您在outputRichTxtBox.AppendText(message); test.Text = message; 方法中使用lock

BeingInvoke
相关问题