- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在一个线程中,如果我使用
有什么区别吗Coinitialize(nil)
而不是
CoInitializeEx(0, COINIT_MULTITHREADED);
我使用 Delphi 7,但我认为其他编程语言也可能存在这个问题感谢您的帮助。
最佳答案
前者以将调用线程放入其自己的单线程单元 (STA) 的方式初始化 COM。后者以将调用线程放入共享多线程单元 (MTA) 的方式初始化 COM。这两个单元具有非常不同的语义,特别是在如何跨线程边界访问 COM 对象方面。不同单元中的线程必须使用代理来共享 COM 对象,但 COM 为您提供同步(通过每线程消息队列)。同一单元中的线程可以在不使用代理的情况下共享 COM 对象,但必须手动同步,例如使用临界区或互斥锁。
所以,是的,确实存在差异,而且差异可能非常显着。请阅读MSDN上的文档,非常详细。
关于delphi - Coinitialize(nil) 和 CoInitializeEx(0, COINIT_MULTITHREADED) 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19882174/
我有一个调用 C++ 方法的 C# 方法。C++ 方法使用 WMI,因此它先调用 CoInitializeEx(0, COINIT_MULTITHREADED),然后调用 CoInitializeSe
我正在通过 C++ 学习 COM。来自 MSDN : Applications are required to use CoInitializeEx before they make any othe
我正在为 DSLR 相机开发一个 SDK,其中包含以下说明: Notes on Developing Windows Applications When creating applications t
尝试使用 hres = CoInitializeEx(0, COINIT_MULTITHREADED); 时出现以下错误 error C2065: 'CoInitializeEx' : undecla
我正在使用 WinAPI 函数 ShellExecuteEx() 在 Windows 资源管理器中打开一个文件夹。 根据 MSDN,我应该总是在使用 ShellExecuteEx() 之前调用 CoI
前几天,我决定需要了解 Windows 平台上 C++ 的测试驱动开发(使用 Visual Studio 2010 Premium)。 在决定试用 boost 的单元测试框架之前,我环顾四周。我应该说
我正在尝试使用此处的 Microsoft 教程为 WMI 编程设置 COM 连接。我稍微修改了示例代码以适合我的风格。到目前为止,我的代码如下: #include #include #includ
我们有一个用 Go 编写的监控代理,它使用许多 goroutines 从 WMI 收集系统指标。我们最近发现当 go 二进制文件在 Server 2016 或 Windows 10(也可能在其他使用
前段时间,我不得不修改一个旧的 COM DLL(Visual C++ 2010,ATL),将它从“Apartment”线程模型迁移到“Both”,即现在可以从 STA 和 MTA 线程调用它而无需序列
在一个线程中,如果我使用 有什么区别吗 Coinitialize(nil) 而不是 CoInitializeEx(0, COINIT_MULTITHREADED); 我使用 Delphi 7,但我认为
我正在尝试将一些 OpenCV 功能集成到我的应用程序中。目前,我已使用 DirectShow 设置代码以从我的相机获取视频源,然后将其显示在 MFC 窗口中。此代码无法更改或删除。 代码运行完全正常
我是一名优秀的程序员,十分优秀!