我在 Delphi 程序的线程内使用 TIdHttp 和 TXMLDocument。
现在我想知道:
- 这些类是否使用 COM 对象,因此我需要在此线程中调用 CoInitialize 和 CoUninitialize?
- 如果是,我是否必须在执行方法主体或使用 TIdHttp 或 TXMLDocument 类的所有方法中使用这些函数?
TIdHTTP
没有 COM 依赖性。
TXML文档can对 COM 有依赖性。在 Windows 上,它是开箱即用的 Microsoft MSXML ActiveX 组件的包装器,该组件使用 COM。如果您使用其他 DOM 供应商(例如,XE7 中提供的 OmniXML),则不存在 COM 依赖性。您可以通过设置来控制DefaultDOMVendor全局变量。
-
CoInitialize
and CoUninitialize
必须从线程上下文中调用一次。通常在Execute()
的方法TThread
,如本示例流程所示:
procedure TMyThread.Execute;
begin
try
CoInitialize(nil);
try
while not Terminated do
begin
DoWorkThatMayUseCOM;
end;
finally
CoUninitialize();
end;
except
on E: Exception do
// log exception
Log(E);
end;
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)