c++ - No se puede usar create_async() con el componente WRL WinRT
microsoft-metro windows-runtime (1)
concurrency::create_async solo se puede usar en C ++ / CX (esto puede no estar indicado expresamente en la documentación, pero todos los posibles tipos de devolución son tipos de sombrero, lo que indica que solo se puede usar en C ++ / CX).
WRL incluye la plantilla de clase base Microsoft::WRL::AsyncBase , de la cual puede derivar para implementar operaciones asincrónicas utilizando C ++ y WRL.
No sé de una implementación canónica que envuelva std::future o concurrency::task , pero puede encontrar un ejemplo de una implementación en la biblioteca CxxReflect con licencia de Boost (buscar async_operation_base y task_based_async_operation ).
Quiero escribir un componente WinRT con soporte asíncrono usando WRL, pero encontré que create_async() está indefinido incluso ppltask.h la ppltask.h y using namespace concurrency ¿Cómo crear una tarea en segundo plano con el patrón WRL?
Mi función es como:
HRESULT GetStreamAsync([out, retval] IAsyncOperation<IRRandomAccessStream*>** operation);
También trato de usar IThreadPoolStatics->RunAsync() , pero parece que solo se puede usar en caso de IAsyncAction y sin valor de retorno. ¿Alguien puede ayudar?