2014-07-04 23 views
0
IAsyncOperation<Foo^>^ op = ...; 
auto theTask = concurrency::create_task(op); 

現在是什麼?什麼是concurrency :: task ::的arg類型?

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

theTask.then([](Foo^ arg) 

編譯器不產生一個錯誤,我在運行時獲取異常(這兩種情況下)。但是這個例外可能與不同的原因有關,我想確保我的語法至少是正確的。

+0

這似乎不是有效的C++ 11語法。 – Ali

+0

@Ali你是對的,我更新了標籤。它是C++/CX。 – Nick

回答

1

then方法採用可調用對象(例如lambda表達式)來獲取異步操作的元素類型或該類型的任務。因此,無論是下面方法:

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

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

發現在你的問題的代碼是缺少lambda表達式的身體和右括號(如,{ body; }))。