• 全部
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm&WPF
  • C#开发新技术
  • 问答

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

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


我用的是以下语法

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

}

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

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

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

没想到效率更低下,请问高人,有什么办法提高效率吗?
...全文
67 点赞 收藏 6
写回复
6 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
diffmaker 2008-12-09
不客气
回复
wt_sanlian 2008-12-09
用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
多行文本框用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);
}

}
回复
相关推荐
发帖
C#
创建于2007-09-28

10.5w+

社区成员

.NET技术 C#
申请成为版主
帖子事件
创建了帖子
2008-12-08 04:46
社区公告

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