многопоточность — winrt / c ++: ожидание результата от отправленной задачи

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

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

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

1

Решение

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

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

dispatcher.RunAsync(CoreDispatcherPriority::Normal, [&]() -> std::future<void> {
auto res = co_await mStoreContext.RequestPurchaseAsync(L"");
});
1

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

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