怎样提高TextBox控件的赋值效率
me现在正在开发一个串口通讯程序,有一个窗口,不断将串口发过来的
数据以十六进制显示在TextBox控件中:
我用的是以下语法
void ShowData(string DataStr)
{
textBox1.Text += DataStr;
}
当串口数据过来的较慢时,没问题,而当达到每50ms来一次数据时,
程序对CPU的占用率就很高了.
我曾用PostMessage方法向编辑控件发送WM_CHAR消息的方法来试
没想到效率更低下,请问高人,有什么办法提高效率吗?
------解决方案--------------------呵呵,没有人的眼睛会快到能看清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);
}
}
------解决方案--------------------
多行文本框用this.textBox1.AppendText("receive data");试试呢?
WinForms