簡體   English   中英

在Delphi線程中使用CoInitialize

[英]Using CoInitialize in a Delphi thread

我在Delphi程序的線程內使用TIdHttp和TXMLDocument。 現在我想知道:

  1. 這些類是否使用COM對象,所以我需要在此線程中調用CoInitialize和CoUninitialize?
  2. 如果是,我是否必須在execute方法的主體或使用TIdHttp或TXMLDocument類的所有方法上使用這些功能?
  • TIdHTTP沒有COM依賴性。

  • TXMLDocument 可以依賴於COM。 在Windows上,它是Microsoft MSXML ActiveX組件的包裝,該組件使用COM。 如果使用其他DOM供應商(例如,XE7的OmniXML),則沒有COM依賴性。 您可以通過設置DefaultDOMVendor全局變量來控制它。

  • 必須從線程上下文中一次調用CoInitializeCoUninitialize 通常在TThreadExecute()方法中,如本示例流程所示:

     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; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM