ADO データベース接続を使用するマルチスレッド環境で、CoInitialize が呼び出されたかどうかを知りたいです。これを確認するにはどうすればよいですか?
質問する
4117 次
1 に答える
15
通常、このチェックを行うべきではなく、単に呼び出し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 を閉じます。
于 2013-01-26T23:55:49.820 に答える