如何在C#的TextBox中显示char数组?

苦蓝

更新:似乎没有垃圾收集。但是我仍然想知道是否或如何通过显示固定大小的char数组而不是一个很长的字符串来减少内存使用,其中onyl对我来说很有趣。


为了使我的应用程序免于垃圾回收(以获得更好的性能),我想在多行 TextBox 或其他控件中显示一个char数组,而不是一个字符串 因此,我可以修改char数组并使控件显示它。我不在乎第一行,可以将它们剪掉。

这是一种快速的日志查看器

TextBox textBox = new TextBox();
// ...

// on every new line:
textBox.AppendText(Environment.NewLine + line);

现在,我textBox.AppendText(Environment.NewLine + line);非常频繁地将字符串行添加到文本框中(相信)注意到垃圾收集每隔几秒钟就会打击我,几乎延迟了1秒,因为我的应用没有其他经常出现滞后的原因(我的大部分数据都是为了避免创建新对象而组织的)。

编辑:

  • 我需要避免创建no对象,new string(...)因此我只能使用此1个char数组。
  • 字符串是不可变的,因此我无法对其进行编辑(char数组或StringBuilder似乎是解决之道)
  • 当我让它运行几个小时甚至几天时,我也希望减少内存使用。
TypeIA

这将行不通... TextBox在内部存储其文本。当您设置Text或调用AppendText()等时,控件会将您提供的数据复制到其内部字符串中。无法将其“指向”一个字符数组,您可以对其进行更新并查看更改。

为此,您需要编写自己的控件,该控件根据数组绘制文本。(实际上,这是大多数显示大量文本的程序(例如文本编辑器)所做的。)

但是,您确定您完全了解造成您所看到的性能问题的原因吗?您可能是正确的,但是由于分配太多string对象而导致的垃圾回收并不是我的第一个怀疑对象。您是否已在性能/内存分析器中运行代码并进行了彻底调查,或者只是猜测?

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章