1

WRL を使用して非同期をサポートする WinRT コンポーネントを作成したいのですが、WRL パターンを使用してバックグラウンド タスクを作成する方法を含めてcreate_async()も未定義であることがわかりました。ppltask.husing namespace concurrency

私の機能は次のようなものです:

HRESULT GetStreamAsync([out, retval] IAsyncOperation<IRRandomAccessStream*>** operation);

も使用しようとしましたが、戻り値IThreadPoolStatics->RunAsync()の場合とない場合にのみ使用できるようです。IAsyncAction誰でも助けることができますか?

4

1 に答える 1

1

concurrency::create_asyncC++/CX でのみ使用できます (これはドキュメントに明示的に記載されていない場合がありますが、可能な戻り値の型はすべてハット型であり、C++/CX でのみ使用できることを示しています)。

WRL には、Microsoft::WRL::AsyncBaseC++ と WRL を使用して非同期操作を実装するために派生できる基本クラス テンプレートが含まれています。

std::futureまたはをラップする正規の実装については知りませんが、Boost ライセンスのCxxReflect ライブラリconcurrency::taskで実装の例を見つけることができます( and を検索してください)。async_operation_basetask_based_async_operation

于 2012-10-15T17:36:01.353 に答える