3

操作終了後に呼び出すメソッドを指定することはできますasyncか?

プラットフォーム:C ++、Windows Phone 8

UDPパケットを非同期で送信するための非ブロッキング方式を実装する必要があります。そして彼らは私の方法を持っています:

onWriteComplete(int errorCode)

操作が完了するとコールバックされます。

これが私が試したことです:

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

しかし、運はありません。

4

1 に答える 1

4

非同期操作は、WindowsPhone8およびWindowsRTアプリケーションのすべての言語で同様に機能します。非同期操作はIAsyncOperationの結果を返します。これを使用して、操作の完了時に実行する関数をチェーンすることができます。

C ++では、 create_task関数とtask :: then関数を使用して、C#と同様の方法でタスクを作成し、チェーンすることができます。例については、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
于 2013-03-22T14:48:58.140 に答える