winform下提高control在UI中的响应速度
2004-09-10 16:28
441 查看
其实有很多种办法,先列出第一种性能最差,也是我们经常写的代码:
private int count = 10000;
private void button1_Click(object sender, System.EventArgs e)
long l1 = System.DateTime.Now.Ticks;
listBox1.Enabled = false;
listBox1.Visible = false;
listBox1.Items.Clear();
for(int i=0;i<count;i++)listBox1.Items.Add(i);
listBox1.Enabled = true;
listBox1.Visible = true;
long l2 = System.DateTime.Now.Ticks;
MessageBox.Show((l2-l1).ToString());
这种方式,值得注意的是,如果你没有设置Visible=false,效率和第一种差不多。
这是.net下推荐的方式:
long l1 = System.DateTime.Now.Ticks;
listBox1.BeginUpdate();
listBox1.Items.Clear();
for(int i=0;i<count;i++)listBox1.Items.Add(i);
listBox1.EndUpdate();
long l2 = System.DateTime.Now.Ticks;
MessageBox.Show((l2-l1).ToString());
对于如上面简单的control,大家可以测试一下,第一和最后一种,差2、3倍的时间是没有问题的。而如果我们使用诸如datagrid这种control,再如果我们的每个cell中作了不少事件的handle,那么,效率是非常低的。常见的现象,你看见datagrid上的cell光标,四处乱跑。
而BeginUpdate/EndUpdate,在这个范围段内,不响应任何事件(此处我也存疑,呵呵)。如果没有event的handle,那么慢的唯一原因是UI需要不停的刷新。所以第二种的方式下,让它disable/invisible,也是可以解决这个问题的。
本来不想写的,看见灵感老大的第17(还是18了?)感悟,呵呵,我就不嫌这玩意土了。
希望对大家有所帮助。
private int count = 10000;
private void button1_Click(object sender, System.EventArgs e)
long l1 = System.DateTime.Now.Ticks;
listBox1.Enabled = false;
listBox1.Visible = false;
listBox1.Items.Clear();
for(int i=0;i<count;i++)listBox1.Items.Add(i);
listBox1.Enabled = true;
listBox1.Visible = true;
long l2 = System.DateTime.Now.Ticks;
MessageBox.Show((l2-l1).ToString());
这种方式,值得注意的是,如果你没有设置Visible=false,效率和第一种差不多。
这是.net下推荐的方式:
long l1 = System.DateTime.Now.Ticks;
listBox1.BeginUpdate();
listBox1.Items.Clear();
for(int i=0;i<count;i++)listBox1.Items.Add(i);
listBox1.EndUpdate();
long l2 = System.DateTime.Now.Ticks;
MessageBox.Show((l2-l1).ToString());
对于如上面简单的control,大家可以测试一下,第一和最后一种,差2、3倍的时间是没有问题的。而如果我们使用诸如datagrid这种control,再如果我们的每个cell中作了不少事件的handle,那么,效率是非常低的。常见的现象,你看见datagrid上的cell光标,四处乱跑。
而BeginUpdate/EndUpdate,在这个范围段内,不响应任何事件(此处我也存疑,呵呵)。如果没有event的handle,那么慢的唯一原因是UI需要不停的刷新。所以第二种的方式下,让它disable/invisible,也是可以解决这个问题的。
本来不想写的,看见灵感老大的第17(还是18了?)感悟,呵呵,我就不嫌这玩意土了。
希望对大家有所帮助。
相关文章推荐
- 使用ajaxcontroltoolkit时如何提高响应速度和阻止timeout
- BeginInvoke 提高UI的响应速度
- 暂时提高UI响应速度的几行代码
- 在jsp页面中响应速度提高的7种方法
- 深入浅出Symfony2 - 如何提高网站响应速度
- 实时显示iOS编写UI代码效果:有效提高UI编写速度
- PHP提高SESSION响应速度的几种方法
- android开发之提高应用启动速度_splash页面瞬间响应_避免APP启动闪白屏
- WinForm ListView虚拟模式加载数据 提高加载速度
- 在jsp页面中响应速度提高的7种方法
- 在WCF数据访问中使用缓存提高Winform字段中文显示速度
- 使用fastcgi_finish_request提高页面响应速度
- 内存数据库来提高web services的响应速度 - JavaEye问答-asp.net关注
- 使用fastcgi_finish_request提高页面响应速度
- 提高win7关闭没响应的进程速度减少电脑死机
- 详解PHP操作Memcache缓存技术提高响应速度的方法
- 如何提高页面响应速度
- 提高AJAX客户端响应速度
- wdcp-apache开启KeepAlive提高响应速度
- 提高网站响应速度的前端技术