Не могу использовать create_async () с компонентом WRL WinRT

Я хочу написать компонент WinRT с асинхронной поддержкой с использованием WRL, но я нашел create_async() не определено, даже я включил ppltask.h а также using namespace concurrency
Как создать фоновую задачу с шаблоном WRL?

Моя функция похожа на:

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::future или же concurrency::task, но вы можете найти пример реализации в Boost-лицензированном Библиотека CxxReflect (ищи async_operation_base а также task_based_async_operation).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]