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