c# - WPF 文本块作为终端窗口。我需要设置限制吗?
问题描述
我正在基于 winForm 版本从头开始编写新的 WPF 控件应用程序。该控件将通过串行监控机器。在控件中,我希望有一个文本窗口来监视来自机器的输入数据。
为此,我有一个 TextBlock 控件。我担心的是,由于它不断运行,TextBlock 可能会随着存储数据的增长而导致内存问题。该控件可以运行数月而无需重新启动。
在限制 TextBlock 内存和处理旧信息方面,我没有任何搜索运气。
我应该做些什么来防止块无限存储数据并导致问题发生?或者是否有更好的控制来显示和监控来自机器的传入数据?
我还没有为此编写代码,因为我想正确启动它。但是,当我使用 winform 执行此操作时,我使用了 TextBox。在那里我有一个事件处理程序检测传入的数据并使用 stringbuilder 来
textbox.AppendText(Environment.newline + string)
接收到的数据到窗口。我认为 TextBlock 可能是这一轮的更好方法。
解决方案
您可以使用 aStringBuilder
创建一个string
,然后将其Text
属性设置TextBlock
为。任何旧Text
值都将有资格进行垃圾回收。没有办法也不应该有理由“限制 TextBlock 内存和处理旧信息”。
或者是否有更好的控制来显示和监控来自机器的传入数据?
就内存和性能而言,您使用 aTextBlock
还是 aTextBox
并不重要。如果您需要选择文本,aTextBox
是更好的选择。否则,您应该选择TextBlock
. 在 WPF 应用程序中显示文本没有更轻量级的方法了。
推荐阅读
- wildfly - 从 DLQ 重新传递 JMS 消息
- constraints - pyomo 是否会删除它认为不需要的括号?
- jquery - 显示 JSON 对象数组中的元素
- python - Heroku 上的 Flask-Firebase 应用程序没有获取环境变量
- excel - UsedRange 循环比预期大
- mysql-workbench - 销售后更新库存水平的触发器
- c# - 搜索两个日期并使用 xml 文件中的日期填充 DataGridView
- reactjs - 如何在带有打字稿的反应应用程序中使用“位构建”
- common-lisp - Hunchentoot 启用 CORS
- javascript - 如何将 newDataValidation() 代码块添加到我的 Google 应用程序脚本中