我需要在C++ REST SDK中调用CoInitialize
Where do I need to call CoInitialize in the C++ REST SDK?
我需要使用 REST SDK 从简单的 REST 服务器调用一些 COM API。它类似于二十一点示例代码。
每当我尝试创建 COM 对象时,都会收到一个异常,指出尚未调用CoInitialize
。但是,我究竟在哪里可以初始化处理 REST 请求的线程?我找不到任何文档。
我尝试了构造函数(示例中的二十一点经销商),但这不起作用:
BlackJackDealer::BlackJackDealer(utility::string_t url) : m_listener(url)
{
CoInitialize(0);
...
}
默认情况下,
C++ REST SDK 中的任务在 Windows 线程池上执行。与其尝试将线程池线程联接到 STA(应被视为反模式),不如执行以下操作之一:
- 在创建需要调用 COM 方法的任务时指定自定义计划程序(派生自
pplx::scheduler_interface
)。有关接口声明,请参阅pplxinterface.h
,pplxwin.cpp
内部windows_scheduler::schedule()
,了解如何在各种 Windows 风格上实现默认计划程序。 - 手动将任何 COM 交互编送到你拥有和控制(并已调用
CoInitialize
)的线程。这可能意味着拥有std::function
对象的全局矢量,您可以使用通常的mutex
/condition_variable
舞蹈来保护这些对象。
路由,也可能需要执行手动编组,但自定义计划程序将与现有的基于任务的 API 更好地互操作。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 关于C++ REST SDK 和同步调用
- 如何从C中调用AWS CPP SDK函数
- 如何在Android SDK中调用和实现C++函数
- 我需要在C++ REST SDK中调用CoInitialize
- 是否有任何api允许你在c/c++中调用部分Android SDK ?
- 在WP8上使用Cocos2dx从c++调用c#函数(例如:Facebook sdk)
- 使用AWS-cpp-sdk时,在退出程序之前等待异步调用返回