在 Delphi 线程中使用 CoInitialize

2023-12-01

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

  1. 这些类是否使用 COM 对象,因此我需要在此线程中调用 CoInitialize 和 CoUninitialize?
  2. 如果是,我是否必须在执行方法主体或使用 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(使用前将#替换为@)

在 Delphi 线程中使用 CoInitialize 的相关文章

  • 多线程 Web 应用程序

    我知道有很多情况都是在应用程序中使用多线程的好例子 但是什么时候最好在 net Web 应用程序中使用多线程 Web 应用程序几乎肯定已经由托管环境 IIS 等 实现多线程化 如果您的页面受 CPU 限制 并且想要使用多个核心 那么可以说多
  • Qt:关闭期间线程仍在运行时 qthread 被销毁

    我有一堂课 class centralDataPool public QObject Q OBJECT public centralDataPool QObject parent 0 centralDataPool commMonitor
  • 初始化 ConcurrentHashMap 值的最快方法

    ConcurrentHashMap 通常在并发环境中用于聚合某个键下的某些事件 例如计算某些字符串值的命中数 如果我们事先不知道密钥 我们需要有一个好的方法来根据需要初始化密钥 它应该在并发性方面快速且安全 这个问题的最佳模式 就效率而言
  • Delphi中AsInteger和Value有什么区别?

    我想知道以下两个与delphi中的数据集相关的语句之间的区别 dsMyDataSet ParamByName ID AsInteger 1122 If ID is integer dsMyDataSet ParamByName ID AsS
  • 什么时候需要将参数传递给“Thread.new”?

    在线程外部定义的局部变量似乎从内部可见 因此以下两种用法Thread new似乎是一样的 a foo Thread new puts a gt foo Thread new a a puts a gt foo The document ht
  • 有没有使用 Java 访问 Windows COM 方法的方法?

    我有一个应用程序 它利用 JNA 来调用 C 硬件抽象库中的函数 支持的硬件设备之一需要初始化 Windows COM 子系统 通过 CoInitialize 或 CoInitializeEx 有谁知道有什么 Java 库可以做到这一点吗
  • Python - 如何实现“可停止”线程?

    已经发布解决方案了here https stackoverflow com questions 323972 is there any way to kill a thread in python创建一个可停止的线程 但是 我在理解如何实施
  • Delphi XE 和 OmniXML:使用 SelectNode()?

    我将以下 XML 片段作为一个更大的 XML 文件的一部分 我正在使用最新的 OmniXML 快照进行处理
  • Schedulers.io() 不返回主线程

    我正在使用 RxParse 来解析查询的异步负载 但是当我使用 subscribeOn Schedulers io 订阅我的可观察值时 我的 onCompleted 方法永远不会在主线程上调用 相反 我的 onCompleted 方法是在工
  • Swift 对异步编程有什么语言级别的支持(如果有)?

    当应用程序必须通过不可预测的网络 例如智能手机应用程序 进行通信时 异步编程对于响应式用户界面来说是必须的 用户界面必须保持响应 同时等待结果从互联网上某处的服务器返回 在大多数语言中 应用程序程序员必须实现自己的状态机 可能使用闭包 来响
  • 优化 Keras 以使用所有可用的 CPU 资源

    好吧 我真的不知道我在说什么 所以请耐心听我说 我正在使用 Theano 后端运行 Keras 以在 MNIST 图像上运行基本的神经网络 目前只是一个教程 过去 我一直使用我的旧 HP 笔记本电脑 因为我有 Windows 和 Ubunt
  • 如何在没有 Control.Invoke() 的情况下从后台线程修改控件属性

    最近 我们遇到了一些旧版 WinForms 应用程序 我们需要更新一些新功能 在专家测试该应用程序时 发现一些旧功能被破坏 无效的跨线程操作 现在 在您认为我是新手之前 我确实有一些 Windows 窗体应用程序的经验 我不是专家 但我认为
  • iPhone SDK - 在后台线程中运行重复进程

    我有一个iPhone我想在其中每隔一段时间在后台执行一个方法的应用程序1第二 所以在我的主线程中 我有以下代码UIViewController viewDidLoad NSTimer timerWithTimeInterval 1 0 ta
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 为什么使用过程来创建对象比使用函数更受欢迎?

    这类似于这个问题 https stackoverflow com questions 1894217 is it memory safe to provide an object as a function result 我问 为什么 到最
  • 未定义的命名空间“提升”

    我正在尝试一个 C 小线程程序 但出现错误 我无法处理它 The Code include Threads h include Interthread h void task1 void arg do stuff void task2 do
  • 如何在显示表单之前强制将焦点集中在组件上

    我必须展示 与ShowModal 一个有很多的表格TEdit但我想把注意力集中在TEdit 但并不总是相同 具体取决于上下文 我不能使用SetFocus之前ShowModal 因为表单未激活 并使用该组件Name or Tag在我的应用程序
  • Perl 中的线程定时循环

    本质上 我希望有一个高优先级线程 它以给定的时间间隔 此处为 0 5 毫秒 运行并中断 一切 执行一个短任务 然后返回 睡眠 状态 使用 Ubuntu 11 04 和 perl v5 10 1 问题是 虽然我得到了某种结果 但我不确定是否有
  • Delphi 2010 控制闪烁

    我一直在从 XP 操作系统升级或迁移我们的软件 以便能够在 Windows 7 下编译和运行 我们的软件开始出现我们在 Windows XP 下没有注意到的问题 目前 我正在处理 TForm 上闪烁的用户定义控件 它似乎时不时地闪烁 但并非
  • 使用 Visual Studio Express 2010 表单应用程序进行 C++ 多线程处理

    我正在开发一个 Windows 窗体应用程序 它连接到一个硬件 获取大量数据 1 GSample 秒 对其进行处理 然后单击按钮将其输出到屏幕上 我现在尝试在一个可以随时启动 停止的循环中自动化该过程 以便我可以在调整采集硬件的输入的同时对

随机推荐

  • 如何将参数从一个 Perl 脚本传递到另一个?

    我有一个运行的脚本 运行后它有一些信息需要传递给下一个要运行的脚本 Unix DOS 命令如下 perl x s param send pl perl x s param receive pl param send pl 是 Send pa
  • Java 9:什么是集合工厂方法? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 Java 9 的到来为 Java 的 Collections API 带来了许多新功能 其中之一就是集合工厂方法 它们是什么以及我如何正确实施它们 Note 1 To preve
  • 仅使用C语言的分布式系统设计

    我的工作是实现一个分布式节点系统 如 p2p 节点 每个节点 比如 A B C 和 D 执行某些功能 并且需要彼此交互以进行各种操作 例如同步操作和其他操作例如 15 个 A 节点与一组 5 个 B 节点交互 进入负载最少的节点队列并获取令
  • 检测图像中的字体

    我有一个非常奇怪的要求 即应该检测 JPG 图像中文本的字体 如何做呢 我想知道有什么办法可以做到这一点 提前致谢 您可以尝试这些服务 什么字体我认为这是识别图像中字体的最准确的服务 不是完全自动化的并且有限制 它只会匹配 MyFonts
  • 如何在 GitHub 上进行快进合并?

    因此 我的一位同事尝试使用 GitHub 的 Web 界面中的 通过快进合并 选项来合并分支 以保持历史记录免受虚假合并提交的影响 master自要合并的功能分支启动以来 它们合并到的分支尚未取得进展 有趣的是 这并没有按预期工作 所有提交
  • 为什么我不能将 C# 方法声明为虚拟方法和静态方法?

    我有一个辅助类 它只是一堆静态方法 并且想对辅助类进行子类化 有些行为是唯一的 具体取决于子类 因此我想从基类调用虚拟方法 但由于所有方法都是静态的 我无法创建普通的虚拟方法 需要对象引用才能访问虚拟方法 有没有办法解决 我想我可以使用单例
  • 从 JsRender 中的嵌套块访问父变量

    我怎样才能访问props s key来自嵌套的for props object items key for prop other items key here I want to print the key from props 我试过了
  • 配置 Eclipse 以在工作区外部添加 buildpath 文件夹

    我正在 Mac 上开发 PHP 根据其他建议 我已将工作区设置在 MAMP 的 HTDOCS 文件夹中 不幸的是 这意味着我不能像在生产中那样使用 的链接 有什么建议么 相关地 工作区似乎阻止引用工作区外部的构建路径 但我想将敏感文件保留在
  • jQuery:我可以自动将插件应用到动态添加的元素吗?

    我正在将我的 Web 应用程序转换为完全 AJAX 架构 我有一个最初加载的母版页和一个加载动态内容的 div 容器 我创建了一些 jQuery 插件 将它们应用于某些元素以扩展它们的功能 我通常会在每个页面加载期间按如下方式调用这些函数
  • 如何通过匹配 BeautifulSoup 中元素属性中的文本来获取元素

    我有这个代码 a title Next Page Results 1 to 60 href class smallfont gt a 我想抓住a元素并获取 href 我怎样才能匹配title属性与Next Page 我想部分匹配标题属性中的
  • 限制 Git 分支访问的方法?

    我的 git 存储库中有四个分支 使用 GitHub 进行管理 生产 Staging Master 人名 发展 有没有办法限制对单个分支 人名 开发 的写访问 我该怎么做 类似问题 供参考 如何编写 git hook 来限制写入分支 使用
  • 哪个 Django 表单字段可以为我提供 的 HTML 输出?

    我有一个带有此输入的 html 表单
  • 开发模式下的GWT + JSTL——可能吗?

    我有一个 GWT 应用程序 由 roo 生成 我决定使用 Spring Security 来保护它 Roo 生成一个 login jspx 页面作为安全设置的一部分 并且此 jspx 使用一些基本的 JSTL 标记库 当在开发模式下运行时
  • 包含标头时防止出现多个 #define

    来自 python 我对正确的方法有点困惑 我正在尝试将该库包含在我的项目中 https github com nothings stb blob master stb image h 为此 我必须在导入文件之前 define STB IM
  • 如何在 JPA2 中强制使用 @ManyToOne 字段?

    我正在为应用程序设计持久性存储库 我是新来的休眠 JPA2我遇到了麻烦创造更复杂的关系在这种情况下外部强制键 一个例子 只是在记事本上写的 所以不完全是这样 我有一个名为 Person 的顶级类 它可以担任多个职位 另一个类 如果我像这样映
  • 低延迟地从 IP 摄像机获取帧

    我当前正在使用此命令从 RTSP 流获取帧并从标准输出读取帧 ffmpeg nostdin rtsp transport tcp i
  • 如何仅在图像悬停时显示 fancybox 标题

    我正在使用Fancybox插件对于图像库 我想仅当用户将鼠标悬停在图像上时显示图像标题 我不知道要修改代码的哪一部分才能完成此任务 我尝试通过添加来编辑 CSSa hover声明如下 fancybox title over wrap 我什至
  • 将日期对象转换为日历对象[重复]

    这个问题在这里已经有答案了 因此 我从传入对象中获取以下形式的日期属性 Tue May 24 05 05 16 EDT 2011 我正在编写一个简单的辅助方法将其转换为日历方法 我使用以下代码 public static Calendar
  • MySQL Inner Join 有限制吗?

    我有这个查询来收集有关单个订单的信息 它变得非常复杂 我没有任何数据可以测试 所以我问 如果有人在小型和大型数据集中有这方面的经验 那么您可以或应该在单个查询中进行多少个连接是否有限制 将大型查询分成较小的部分是否明智 或者这不会产生重大影
  • 在 Delphi 线程中使用 CoInitialize

    我在 Delphi 程序的线程内使用 TIdHttp 和 TXMLDocument 现在我想知道 这些类是否使用 COM 对象 因此我需要在此线程中调用 CoInitialize 和 CoUninitialize 如果是 我是否必须在执行方