什么是concurrency :: task :: then的arg类型?

时间:2014-07-04 10:07:24

标签: c++11 concurrency visual-studio-2013 c++-cx

IAsyncOperation<Foo^>^ op = ...;
auto theTask = concurrency::create_task(op);

现在怎么办?

theTask.then([](concurrency::task<Foo^> arg)

theTask.then([](Foo^ arg)

编译器不会生成错误,我在运行时会遇到异常(对于这两种情况)。但是这个异常可能与不同的原因有关,我想确保我的语法至少是正确的。

1 个答案:

答案 0 :(得分:1)

then方法采用可调用对象(例如lambda表达式)来获取异步操作的元素类型或该类型的任务。因此,以下任何一种都可以起作用:

theTask.then([](Foo^ arg) { return 0; });

theTask.then([](concurrency::task<Foo^> arg) { return 0; });

请注意,您问题中的代码缺少lambda表达式的正文和右括号(如{ body; }))。

相关问题