是否可以在完成async
操作后指定要调用的方法?
平台:C ++,Windows Phone 8
我需要实现非阻塞方法来异步发送UDP数据包。他们有我的方法:
onWriteComplete(int errorCode)
在操作完成时回调。
以下是我尝试的内容:
res = await asyncWrite();
onWriteComplete( res );
但没有运气。
答案 0 :(得分:4)
异步操作在Windows Phone 8和Windows RT应用程序中以相似的方式在所有语言中工作。异步操作返回一个IAsyncOperation结果,您可以使用该结果链接一个在操作完成时运行的函数。
在C ++中,您可以使用create_task和task::then函数创建任务并以类似于C#的方式链接它们。请查看Asynchronous Programming in C++ (Windows Store Apps)以获取示例。
该示例从IAsyncOperation结果创建任务,并安排在第一个任务完成时执行的另一个任务:
auto deviceEnumTask = create_task(deviceOp);
// Call the task’s .then member function, and provide
// the lambda to be invoked when the async operation completes.
deviceEnumTask.then( [this] (DeviceInformationCollection^ devices )
{
for(int i = 0; i < devices->Size; i++)
{
DeviceInformation^ di = devices->GetAt(i);
// Do something with di...
}
}); // end lambda