Forms.Timer_tick不运行或间隔时间不符合设定的解决措施

来源:互联网 发布:js文件为什么不能编辑 编辑:程序博客网 时间:2024/06/14 06:16

不知道我的错误典不典型,笔者的程序设计为Timer设计为每0.1秒就对listview进行刷新显示,但是实际上效果并不理想。原有程序如下



后来查到资料,原来是因为我的showloop函数效率不高导致的,解决方案如下:


主要变化就是加红的两句。原因是如果不加这两句,程序会逐个向listView中添加,而从后台向界面添加数据是非常耗费时间的(笔者猜想的,以后还会说到这个问题)。而Timer_tick()的下一次事件只有等待上一次事件完成后才会进行重新计时并激发,这就造成更新越拖越慢。

而加上BeginUpdate()后,会将接下来的更新先存入缓存,等到EndUpdate()函数以后再一次性存入。别小看这两行代码,它们带来的改善是很明显的。StackOverFlow上面有人做过实验,不加时耗费时间大概为13,870 ms,加入后耗费时间仅为3,106 ms。当然还有其他更快的方式,不过这种最简单,改变幅度也最大。StackOverFlow上最快的大概为2,141 ms,但是这相较于之前的变化幅度,在很多不要求再快应用上可以忽略了。

下为原贴地址,有进一步需求的童鞋可以参考下。

http://stackoverflow.com/questions/9008310/how-to-speed-adding-items-to-a-listview



0 0
原创粉丝点击