winrt / c ++: ожидание результата от отправленной задачи - PullRequest
0 голосов
/ 20 сентября 2018

Я хочу отправить задание в поток пользовательского интерфейса, затем дождаться результата и использовать его из другого потока.Вот так, но co_await не работает внутри лямбды:

dispatcher.RunAsync(CoreDispatcherPriority::Normal, [&]() {
    auto res = co_await mStoreContext.RequestPurchaseAsync(L"");
});

Или даже ждет всей операции RunAsync, если я смогу получить из нее свой результат

1 Ответ

0 голосов
/ 20 сентября 2018

Это потому, что void не может использоваться как возвращаемое значение от сопрограммы (я могу быть, если вы используете мою мою библиотеку ).

попробуйте вместо этого вернуть std::future<void>:

dispatcher.RunAsync(CoreDispatcherPriority::Normal, [&]() -> std::future<void> {
    auto res = co_await mStoreContext.RequestPurchaseAsync(L"");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...