QT操作Excel时将读写功能置于子线程内存报错解决方案
来源:互联网 发布:网上的淘宝刷手可靠吗 编辑:程序博客网 时间:2024/05/19 01:07
在程序设计和开发中,我们通常会将比较耗费CPU时间的操作放到子线程当中,从而避免主线程的阻塞,同时显现并行化。尤其是在QT这类涉及到GUI程序设计的程序。我们都知道,在QT中GUI线程占据着主线程,如果我们将那些比较耗费CPU时间的任务放到主线程中执行会导致GUI界面的卡顿或卡死现象的出现。
基于这个原理,前段时间在开发QT读写Excel文件的时候,还是基于该策略,将Excel的读写操作放到子线程中。但是,实际运行过程中却会出现异常的内存报错,很是疑惑。尤其是,我在win10系统上开发和运行不会内存报错,发布到win7系统上就会内存报错。经过Google和Baidu的查询,找到解决问题的方法。
报错的原因是:OLE组件的初始化和释放默认在GUI线程中已经实现了。在次线程中必须自己进行初始化和释放操作。因此,在Excel操作的子线程中要以如下的方式修改run()函数:
void run(){ HRESULT r = OleInitialize(0); if (r != S_OK && r != S_FALSE) { qWarning("Qt: Could not initialize OLE (error %x)", (unsigned int)r); } QAxObject * excelApplication = new QAxObject("Excel.Application"); OleUninitialize();}注意:需要在头文件中加入#include "qt_windows.h"引用。
有问题欢迎一起讨论,QQ:33845995,Email:qinpanke@hpu.edu.cn
阿科
2017年5月1日
0 0
- QT操作Excel时将读写功能置于子线程内存报错解决方案
- 子线程操作malloc内存
- 使用POI操作Excel时new XSSFWorkbook ()报错java.lang.NoSuchMethodError解决方案
- QT之ODBC操作Excel的解决方案
- QT 线程中使用子线程操作注意事项
- Qt读写Excel
- Qt中读写Excel
- qt读写excel
- qt之读写excel
- VS+Qt读写Excel
- Qt 中读写Excel
- 利用excel进程实现导入功能时在本地能正常操作,在服务器上始终报错
- Qt共享内存读写
- 为啥Toast在子线程报错
- 子线程使用Toast报错
- odbc 读写 操作 Excel
- C# 读写操作Excel
- excel 读写操作
- Android面试攻略
- java学习笔记--字符串
- java彩票系统
- java 编程思想 末端哨兵实现内部链式存储机制
- 堆栈及函数调用栈帧
- QT操作Excel时将读写功能置于子线程内存报错解决方案
- 高德地图 点标注
- 使用Zookeeper对进程间加锁
- POJ
- 通过smtp发送邮件
- 线程池的使用(ThreadPoolExecutor详解)
- K-Means集群算法
- PHP定界符
- spring配置文件ApplicationContext.xml文件里面代码没有提示功能