IAsyncOperation<Foo^>^ op = ...;
auto theTask = concurrency::create_task(op);
现在怎么办?
theTask.then([](concurrency::task<Foo^> arg)
或
theTask.then([](Foo^ arg)
编译器不会生成错误,我在运行时会遇到异常(对于这两种情况)。但是这个异常可能与不同的原因有关,我想确保我的语法至少是正确的。
答案 0 :(得分:1)
then
方法采用可调用对象(例如lambda表达式)来获取异步操作的元素类型或该类型的任务。因此,以下任何一种都可以起作用:
theTask.then([](Foo^ arg) { return 0; });
或
theTask.then([](concurrency::task<Foo^> arg) { return 0; });
请注意,您问题中的代码缺少lambda表达式的正文和右括号(如{ body; })
)。