winrt / c ++:等待分派任务的结果

时间:2018-09-20 14:20:59

标签: c++ multithreading concurrency async-await winrt-async

我想将作业分派到UI线程,然后等待结果并从另一个线程使用它。这样,但是co_await在lambda内部不起作用:

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

或者什至等待整个RunAsync操作,如果我可以从中得到结果

1 个答案:

答案 0 :(得分:1)

这是因为void不能用作协程的返回值(如果您使用我的my library可以这样)。

尝试返回一个std::future<void>

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