c++ - winrt/c++ : await result from dispatched task

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

我想向 UI 线程分派(dispatch)一个作业,然后等待结果并从另一个线程使用它。像这样,但是 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"");
});

关于c++ - winrt/c++ : await result from dispatched task,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52427339/

相关文章:

c++ - SFML 形状无限旋转

c++ - Cuda,计算3d对象之间的距离矩阵

java - 线程意外停止

java - 等价于 Java 中的 await(x==0)

multithreading - 什么是死锁?

java - 从 EDU 迁移到 java.util.concurrent 会降低性能两倍

c++ - 我可以使用 QSortFilterProxyModel 创建摘要/聚合模型吗?

C++ 重载 (+) 运算符

c - 杀死使用clone()创建的子进程

c - 检测当前线程是否是 libuv 默认事件循环的主线程