我需要使用REST SDK从一个简单的REST服务器调用一些COM API。它类似于BlackJack sample code。
每当我尝试创建一个COM对象时,我都会收到一个未调用CoInitialize
的异常。但是我在哪里可以初始化处理REST请求的线程?我找不到任何文件。
我尝试了构造函数(示例中的BlackJackDealer),但这不起作用:
BlackJackDealer::BlackJackDealer(utility::string_t url) : m_listener(url)
{
CoInitialize(0);
...
}
答案 0 :(得分:1)
默认情况下,C ++ REST SDK中的任务在Windows Threadpool上执行。您可以:
,而不是尝试将线程池线程连接到STA(应该被视为反模式)。pplx::scheduler_interface
派生)。有关接口声明的信息,请参阅pplxinterface.h
,windows_scheduler::schedule()
内的pplxwin.cpp
了解如何在各种Windows风格上实现默认调度程序。CoInitialize
)。这可能意味着拥有std::function
个对象的全局向量,您可以使用通常的mutex
/ condition_variable
舞来保护它。即使您使用自定义调度程序路径,也可能需要执行手动编组,但自定义调度程序将与现有的基于任务的API更好地互操作。