3

是否可以指定完成操作后要调用的方法async

平台:C++,Windows Phone 8

我需要实现异步发送 UDP 数据包的非阻塞方法。他们有我的方法:

onWriteComplete(int errorCode)

操作完成时回调。

这是我尝试过的:

res = await asyncWrite();
onWriteComplete( res );

但没有运气。

4

1 回答 1

4

在 Windows Phone 8 和 Windows RT 应用程序的所有语言中,异步操作以类似的方式工作。异步操作返回一个 IAsyncOperation 结果,您可以使用该结果链接一个函数以在操作完成时运行。

在 C++ 中,您可以使用create_tasktask::then函数以类似于 C# 的方式创建任务并将它们链接起来。查看C++ 中的异步编程(Windows 应用商店应用程序)作为示例。

该示例从 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
于 2013-03-22T14:48:58.140 回答