我想将作业分派(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"");
});

08-16 07:49