在具有ADO数据库连接的多线程环境中,我想知道CoInitialize是否已被调用。我该如何检查这个?
通常你不应该做这个检查而只是打电话CoInitialize
/CoUnInitialize
一对。你仍然可以这样做:
function IsCoInitialized: Boolean;
var
HR: HResult;
begin
HR:= CoInitialize(nil);
Result:= (HR and $80000000 = 0) and (HR <> S_OK);
if (HR and $80000000 = 0) then CoUnInitialize;
end;
如果你打电话就没有问题CoInitialize
在一个线程中不止一次。第一次调用应该返回S_OK
,所有后续调用都应该返回S_FALSE
。所有这些调用都被认为是成功的,并且应该由CoUnInitialize
来电。如果你打电话CoInitialize
一个线程中n次,只有最后n次CoUnInitialize
调用关闭 COM。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)