在Delphi线程中使用CoInitialize

时间:2017-03-20 13:09:13

标签: multithreading delphi com

我在Delphi程序的一个线程中使用TIdHttp和TXMLDocument。 现在我想知道:

  1. 这些类是否使用COM对象,因此我需要在此线程中调用CoInitialize和CoUninitialize?
  2. 如果是,我是否必须在执行方法的主体或使用TIdHttp或TXMLDocument类的所有方法中使用这些函数?

1 个答案:

答案 0 :(得分:5)

  • TIdHTTP没有COM依赖。

  • TXMLDocument 可以依赖于COM。在Windows上,开箱即用它是Microsoft的MSXML ActiveX组件的包装,它使用COM。如果您使用其他DOM供应商(例如,OmniXML,可从XE7获得),那么就没有COM依赖项。您可以通过设置DefaultDOMVendor全局变量来控制它。

  • CoInitializeCoUninitialize必须在线程上下文中调用一次。通常在Execute()的{​​{1}}方法中,如此示例流程中所示:

    TThread