Database: mdb (ADO)
Program: NT 服务程序
笔者做了一个小程序,当程序运行时,它将创建几个线程,这些线程会用ADO操作数据库.发现:
1.如果在线程里进行初始化COM库(CoInitialize)的工作,那么_ConnectionPtr->Open()将失败,提示说"无效指针".
2.如果在进程(主线程)中创建,则会成功.
问题:
这是不是一个,一个规则:在线程里不可以初始化COM库(CoInitialize);还是我的方法有问题.请各位大虾知无不言.
11 个解决方案
#1
印象中每一个线程都要CoInitialize,具体记不得了,建议看帮助吧。
#2
可以
#3
可以的,有益无害.
#4
如果你用了COM
就必须初始化
就必须初始化
#5
每个线程都必须....
#6
每个线程都必须CoInitialize,不同线程的interface禁止混用,即interface只能在初始化它的线程内使用
#7
Hi All:
我的编程结果的结论是:只需在进程中CoInitialize就得了.想来,这也符合,线程共享其父进程的资源.
问题是: 如果在线程里进行CoInitialize就不行,我会再仔细检查一下我的代码.力求把这个问题搞清楚. 谢谢大家的发言.
我的编程结果的结论是:只需在进程中CoInitialize就得了.想来,这也符合,线程共享其父进程的资源.
问题是: 如果在线程里进行CoInitialize就不行,我会再仔细检查一下我的代码.力求把这个问题搞清楚. 谢谢大家的发言.
#8
很简单,在一个线程上调用CoIntalize(),而在另一线程上使用COM,这样做是无效的!你必须在使用Com的线程上调用CoIntalize()和CoUnitalize()
#9
每个线程单独CoInitialize,单独初始化
#10
将CoInitialize改为CoInitializeEx(Null, Mu....)多线程套间。
#11
你换成sql试试
#1
印象中每一个线程都要CoInitialize,具体记不得了,建议看帮助吧。
#2
可以
#3
可以的,有益无害.
#4
如果你用了COM
就必须初始化
就必须初始化
#5
每个线程都必须....
#6
每个线程都必须CoInitialize,不同线程的interface禁止混用,即interface只能在初始化它的线程内使用
#7
Hi All:
我的编程结果的结论是:只需在进程中CoInitialize就得了.想来,这也符合,线程共享其父进程的资源.
问题是: 如果在线程里进行CoInitialize就不行,我会再仔细检查一下我的代码.力求把这个问题搞清楚. 谢谢大家的发言.
我的编程结果的结论是:只需在进程中CoInitialize就得了.想来,这也符合,线程共享其父进程的资源.
问题是: 如果在线程里进行CoInitialize就不行,我会再仔细检查一下我的代码.力求把这个问题搞清楚. 谢谢大家的发言.
#8
很简单,在一个线程上调用CoIntalize(),而在另一线程上使用COM,这样做是无效的!你必须在使用Com的线程上调用CoIntalize()和CoUnitalize()
#9
每个线程单独CoInitialize,单独初始化
#10
将CoInitialize改为CoInitializeEx(Null, Mu....)多线程套间。
#11
你换成sql试试