在程序写入WPF文本框时如何减少CPU使用率过高?

时间:2018-08-03 05:32:19

标签: c# .net wpf performance textbox

我开发了小型WPF应用,并且我有以下代码在文本框中写日志:

    public void RemoteInfo(string message)
    {
        textBox.Dispatcher.BeginInvoke(new Action(delegate ()
        {
            DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture) + " " + message + Environment.NewLine + textBox.Text;
        }));
    }

我从以下代码中调用此方法:

     Task.Run(() =>
        {
            while (true)
            {
                statusBarWriter.RemoteInfo("Some text");
                Thread.Sleep(100);
            }
        });

此代码正在运行时,CPU使用率至少增加到30%(在30%之后,我停止了该程序以防止冻结)。

代码出了什么问题?如何防止CPU使用率过高?

更新第二个代码段是最新的

1 个答案:

答案 0 :(得分:0)

更改写入方式后,CPU负载减少,现在约为0-1%:

    textBox.SelectionStart = 0;
    textBox.SelectionLength = 0;
    textBox.SelectedText = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.fff", CultureInfo.InvariantCulture) + " " + message + Environment.NewLine;