我想将作业分派(dispatch)到UI线程,然后等待结果并从另一个线程使用它。这样,但co_await在lambda内部不起作用:
dispatcher.RunAsync(CoreDispatcherPriority::Normal, [&]() {
auto res = co_await mStoreContext.RequestPurchaseAsync(L"");
});
甚至等待整个RunAsync操作,如果我可以从中得到结果
最佳答案
这是因为void
不能用作协程的返回值(如果您使用my library,则可以这样)。
尝试返回std::future<void>
代替:
dispatcher.RunAsync(CoreDispatcherPriority::Normal, [&]() -> std::future<void> {
auto res = co_await mStoreContext.RequestPurchaseAsync(L"");
});