2012-10-15 11 views
1

我想写使用WRL与异步支持WinRT的成分,但我发现create_async()是不确定的,即使我包括ppltask.husing namespace concurrency 如何创建WRL模式的后台任务?不能与WRL的WinRT组件中使用create_async()

我的功能是这样的:

HRESULT GetStreamAsync([out, retval] IAsyncOperation<IRRandomAccessStream*>** operation); 

我也尝试使用IThreadPoolStatics->RunAsync(),但似乎它只能在IAsyncAction情况下,没有返回值被使用。有人可以帮忙吗?

回答

1

concurrency::create_async仅适用于C++/CX(文档中未明确说明,但所有可能的返回类型均为hat类型,表明它仅适用于C++/CX)。

WRL包含Microsoft::WRL::AsyncBase基类模板,您可以从中导出该模板以使用C++和WRL实现异步操作。

我不知道规范的实现,它包装std::futureconcurrency::task的,但你可以找到在升压许可CxxReflect library一个实施的例子(搜索async_operation_basetask_based_async_operation)。

+0

似乎链接到CxxReflect库指向一些MSDN页面... –