我想使用WRL编写一个具有异步支持的WinRT组件,但我发现create_async()
未定义,即使我包含了ppltask.h
和using namespace concurrency
如何使用WRL模式创建后台任务?
我的功能如下:
HRESULT GetStreamAsync([out, retval] IAsyncOperation<IRRandomAccessStream*>** operation);
我也尝试使用IThreadPoolStatics->RunAsync()
,但似乎只能在IAsyncAction
的情况下使用并且没有返回值。有人可以帮忙吗?
答案 0 :(得分:1)
concurrency::create_async
仅在C ++ / CX中可用(文档中可能没有明确说明,但所有可能的返回类型都是帽子类型,表明它只能在C ++ / CX中使用)。
WRL包含Microsoft::WRL::AsyncBase
基类模板,您可以从中使用C ++和WRL实现异步操作。
我不知道包含std::future
或concurrency::task
的规范实现,但您可以在Boost许可CxxReflect library中找到实施示例(搜索{{ 1}}和async_operation_base
)。