[QWorker] 制作多线程日志输出查看Demo

要解决的问题: 有多个线程输出日志,日志内容需要在列表框中显示出来,不管日志输出的频率快慢,界面不能卡,不能闪烁。超过10万行日志时,自动删除最开始的1万行日志。

此问题涉及多线程编程,多线程输出时要更新界面的显示。

多线程的东西,当然不能忘了QWorker这样的神器,下面我们就来使用QWorker解决问题,哦,不对,是用YxdWorker来解决问题(为什么是YxdWorker?哈,这是宝宝的修改版本啦,封装成了自己喜欢的样子,其实和QWorker差不多,有兴趣可以到 SVN:  https://github.com/yangyxd/YxdWorker下载。)

一、先在在搜索路径中添加对YxdWorker的引用,然后在窗体上放一个ListView, Name=ListView1,再放一个CheckBox, Name=CheckBox1。效果如下:

QQ截图20160122210453

ListView1的OwnerData属性设为True,ViewStyle属性设为vsReport,添加一列“日志内容”。

 

二、 开始写代码

核心有两点:

  1.  使用FLogRef计算器作为实际更新界面的依据。
  2. 使用ListView_SetItemCountEx宏来代替ListView.Count=xxxx更新列表框的行数。
  3. 使用临界锁来保持线程同步。

源码下载:

LogView_Demo

 

分享到:

0 条评论

沙发空缺中,还不快抢~