MFC多线程失败:Create Instance failed

最近在使用VS2010处理MFC多线程时,按照如下方式编写:

 

AfxBeginThread(threadFunction,NULL);                     //线程创建函数

 

UINT threadFunction(LPVOID para)                           //线程处理函数

{

      //处理数据代码

      return 0;

}

 

虽然上面的代码编译正常,但是在运行时总是碰到Create Instance failed这个运行错误。

 

在此之前我也使用上面的写法创建多线程处理,一直都很正常,为什么现在反而又出错了?后经查找资料,找到了问题的根源:

我在创建的线程中使用了ADO方式操作数据库,而这种操作方式需要使用COM组件。每个线程在使用COM组件之前都必须声明它的套间类型,即在每个线程使用组件对象之前都要调用CoInitialize,并在退出之前调用CoUninitialize。如果在线程中没有调用,对象根本就没有创建出来,继续运行就会访问0指针,就会非法操作了。

 

现在只需将线程处理函数改为如下形式即可解决问题:

UINT threadFunction(LPVOID para)                           //线程处理函数

 

{

      CoInitialize(null)

      //处理数据代码

 

      CoUninitialize();

      return 0;

}

 

 

说明:如果你的线程中没有使用COM组件,无需调用CoInitialize和CoUninitialize,线程也能正确运行。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值