怎样提高TextBox控件的赋值效率

wt_sanlian 2008-12-08 04:46:46
me现在正在开发一个串口通讯程序,有一个窗口,不断将串口发过来的
数据以十六进制显示在TextBox控件中:


我用的是以下语法

void ShowData(string DataStr)
{
textBox1.Text += DataStr;

}

当串口数据过来的较慢时,没问题,而当达到每50ms来一次数据时,

程序对CPU的占用率就很高了.

我曾用PostMessage方法向编辑控件发送WM_CHAR消息的方法来试

没想到效率更低下,请问高人,有什么办法提高效率吗?
...全文
114 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
diffmaker 2008-12-09
  • 打赏
  • 举报
回复
不客气
wt_sanlian 2008-12-09
  • 打赏
  • 举报
回复 1
用AppendText后,效率大大提高了
谢谢diffmaker
wangping_li 2008-12-08
  • 打赏
  • 举报
回复
50ms太快了
simen_frankly 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tmxk2002 的回复:]
呵呵,没有人的眼睛会快到能看清50ms一次的数据的,
你可以先往一个string变量或者StringBuilder里添加,然后有一定延迟的把这个数据给TextBox,相当于你在收数据和显示数据之间有一个缓存。

DateTime last = DateTimeNow;
StringBuilder str = new StringBuilder();
void ShowData(string DataStr)
{
if(DateTime.Now.Substract(last).TotalMilliSeconds > 500)
{
textBox1.Text += str.ToString();
str.…
[/Quote]
有道理~~~~~
diffmaker 2008-12-08
  • 打赏
  • 举报
回复 1
多行文本框用this.textBox1.AppendText("receive data");试试呢?

WinForms
  • 打赏
  • 举报
回复
呵呵,没有人的眼睛会快到能看清50ms一次的数据的,
你可以先往一个string变量或者StringBuilder里添加,然后有一定延迟的把这个数据给TextBox,相当于你在收数据和显示数据之间有一个缓存。

DateTime last = DateTimeNow;
StringBuilder str = new StringBuilder();
void ShowData(string DataStr)
{
if(DateTime.Now.Substract(last).TotalMilliSeconds > 500)
{
textBox1.Text += str.ToString();
str.Clear();
last = DateTime.Now;
}
else
{
str.Append(DataStr);
}

}

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧