我有一个自定义日志记录框架写入System.Windows.Forms.TextBox。我现在写给TextBox的方式是这样的:
tbLog.Text += newLogEntry.Text;
这种方法的问题在于,每次执行此操作时,tbLog.Text和newLogEntry.Text中的字符串将被连接,然后分配给tbLog.Text。随着TextBox中的日志增长,操作变得非常占用内存并且越来越慢。
有没有办法更快更有效率?
答案 0 :(得分:3)
TextBox有一个函数AppendText()
。您应该使用它,因为它的性能比+=
运算符要好得多。
答案 1 :(得分:1)
'问题'是将字符串附加到另一个字符串,每次都会产生一个新字符串。 当你做很多concats时,这可能会非常昂贵。
如果我是你,我不会直接登录TextBox。我只是跟踪日志消息,并使用文本框可视化日志。 通过这样做,您可以选择将日志保存到文本文件,或者选择以任何其他方式可视化日志。
例如,您可以将邮件保留在StringCollection
或List<String>
中。例如,您可以使用ListBox而不是在文本框中对其进行可视化,并且每次向日志添加新项时,都可以向ListBox添加新项。
但是,我会确保这不是紧密耦合的。
例如,每次将新消息保存到日志时,您的日志类都可以触发事件。
然后,您可以拥有不同的“观察者”,通过订阅事件来跟踪日志,并在每次引发事件时采取适当的操作。
答案 2 :(得分:1)
就个人而言,我会首先使用.Append()在StringBuilder中完成所有工作。然后我将使用StringBuilder上的.ToString()方法设置文本框文本属性。