C# 从事件处理程序更新富文本框
我试图在消息到达时从事件处理程序更新富文本框。出于某种原因,富文本框只在所有消息到达后才会更新 我使用的代码:C# 从事件处理程序更新富文本框,c#,wpf,C#,Wpf,我试图在消息到达时从事件处理程序更新富文本框。出于某种原因,富文本框只在所有消息到达后才会更新 我使用的代码: private void OutputMessageToLogWindow(string message) { Application.Current.Dispatcher.BeginInvoke(new Action(() => { outputRichTxtBox.AppendText(messa
private void OutputMessageToLogWindow(string message)
{
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
outputRichTxtBox.AppendText(message);
test.Text = message;
}));
}
我认为您的代码不是线程安全的,在并发消息的情况下,某些消息可能不会通过同时执行以下行来更新:
outputRichTxtBox.AppendText(message);
test.Text = message;
因此,为了使其线程安全,我建议在BeingInvoke
方法中使用lock
:
private static readonly object synchLock = new object();
private void OutputMessageToLogWindow(string message)
{
Application.Current.Dispatcher.BeginInvoke(new Action(() =>
{
lock(synchLock)
{
outputRichTxtBox.AppendText(message);
test.Text = message;
}
}));
}
尝试同样的事情