IAsyncOperationWithProgress<TResult,TProgress> インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
進行状況の更新を呼び出し元に報告できる非同期操作を表します。 これは、結果を持ち、進行状況を報告する多くのWindows ランタイム非同期メソッドの戻り値の型です。
public interface class IAsyncOperationWithProgress : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
template <typename TResult, typename TProgress>
struct IAsyncOperationWithProgress : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
public interface IAsyncOperationWithProgress<TResult,TProgress> : IAsyncInfo
Public Interface IAsyncOperationWithProgress(Of TResult, TProgress)
Implements IAsyncInfo
型パラメーター
- TResult
- TProgress
- 派生
- 属性
- 実装
Windows の要件
デバイス ファミリ |
Windows 10 (10.0.10240.0 で導入)
|
API contract |
Windows.Foundation.FoundationContract (v1.0 で導入)
|
注釈
IAsyncOperationWithProgress<TResult,TProgress> は、完了時に結果を持つ多くのWindows ランタイム非同期メソッドの戻り値の型であり、進行状況を報告する通知もサポートします (呼び出し元は Progress のコールバックを割り当てることでサブスクライブできます)。 これは、約 100 種類のWindows ランタイム API を構成します。 進行状況を報告しない (ただし結果が得られた) API では、別のインターフェイス IAsyncOperation TResult が<使用されます。>
アプリ コードで IAsyncOperationWithProgress<TResult、TProgress> ( TResult 固有の制約を持つ) を返すメソッドを使用する場合、通常は IAsyncOperationWithProgress 戻り値に直接アクセスしません。 これは、ほとんどの場合、言語固有の待機可能な構文を使用するためです。 この場合、メソッドの明らかな戻り値は 、TResult パラメーターとして指定された型です。 詳細については、「非同期プログラミング」または非同期プログラミングをWindows ランタイムするための言語固有のガイド (C# または Visual Basic、C++、JavaScriptで非同期 API を呼び出す) を参照してください。
言語固有の待機可能な構文を使用しない場合でも、IAsyncOperationWithProgress<TResult、TProgress> を直接使用することは一般的ではありません。 各言語には、Windows ランタイム インターフェイスよりも一般的に使いやすい拡張ポイントがあります。 JavaScript には WinJS.Promise と then/done 構文があります。 .NET には AsTask 拡張メソッドがあり、IAsyncOperationWithProgress<TResult、TProgress> が タスク<TResult> に変換されると、結果の取得、キャンセル、完了時の通知の取得などが簡単になります。 C++/CX の場合は、 コンカレンシー ランタイム を使用して呼び出しをラップできます ( また、create_taskを使用します)。 つまり、IAsyncOperationWithProgress<TResult、TProgress> はランタイム レベルのインフラストラクチャと見なすことができます。各言語は、待機可能な構文または非同期プログラミング モデルを独自の方法でサポートするためのフレームワークとして使用されます。
具体的には、.NET コードの進行状況を処理する場合は、拡張機能の使用時に 1 つの IProgress 参照パラメーターを持つ AsTask 署名を使用します。 (この使用法では、進行状況ユニットは既に制約されており、使用している IAsyncOperationWithProgress メソッドと一致します)。IProgress を実装するオブジェクトを指定すると、Windows ランタイム メソッドが進行状況通知を報告するたびに Report メソッドの実装が呼び出されます。
アクションの進行状況を監視するには (上記の言語固有の手法を使用していない場合)、 Progress プロパティを設定し、 AsyncOperationProgressHandler<TResult、TProgress> デリゲートを実装するメソッドの名前を指定します。
C++/WinRT 拡張機能関数
Note
拡張関数は、特定のWindows ランタイム API の C++/WinRT プロジェクション型に存在します。 たとえば、 winrt::Windows::Foundation::IAsyncAction は 、IAsyncAction の C++/WinRT プロジェクション型です。 拡張関数は、実際のWindows ランタイム型のアプリケーション バイナリ インターフェイス (ABI) サーフェスの一部ではないので、Windows ランタイム API のメンバーとして一覧表示されません。 ただし、任意の C++/WinRT プロジェクト内から呼び出すことができます。 WINDOWS ランタイム API を拡張する C++/WinRT 関数を参照してください。
TResult get() const;
操作が完了するまで同期的に待機し、完了した値を返します。 操作が取り消された場合、またはエラー状態になった場合は、対応する例外をスローします。 シングルスレッド アパートメントから呼び出すことはできません。 詳細および get を呼び出す方法を示すコード例については、「 コルーチンの記述」を参照してください。
AsyncStatus wait_for(TimeSpan const& timeout) const;
操作が完了するか、指定されたタイムアウトまで同期的に待機します。 タイムアウトが経過した場合は 、IAsyncOperationWithProgress、または AsyncStatus::Started の状態を返します。 アクションがタイムアウトしなかった場合は、 GetResults を呼び出して操作の結果を取得します。 詳細と、 wait_forを呼び出す方法を示すコード例については、「 非同期タイムアウトを簡単に行う」を参照してください。
インターフェイスの継承
IAsyncOperationWithProgress<TResult,TProgress は>IAsyncInfo を継承します。 IAsyncOperationWithProgress<TResult,TProgress> を実装する型は、 IAsyncInfo のインターフェイス メンバーも実装します。
実装者へのメモ
既存のメソッドの呼び出しと同様に、IAsyncOperationWithProgress TResult、TProgress<を直接使用しない非同期メソッドを定義する言語固有の> 方法があります。 .NET を使用してコードを記述する場合、メソッドは Task<TResult> を返すことができます。 C++/CX の場合は、 コンカレンシー ランタイムを使用できます。 ただし、コンポーネントを定義する場合は、タスク/タスクを内部的に使用できますが、パブリック メソッドのWindows ランタイム インターフェイスのいずれかを返す必要があります。 言語固有の非同期サポート型 (およびコードで従来使用される他の多くの言語固有の型) は、Windows ランタイム コンポーネントのパブリック 領域には使用できません。
プロパティ
Completed |
操作完了通知を処理するメソッドを取得または設定します。 |
ErrorCode |
非同期操作のエラー条件を記述する文字列を取得します。 (継承元 IAsyncInfo) |
Id |
非同期操作のハンドルを取得します。 (継承元 IAsyncInfo) |
Progress |
進行状況通知を処理するメソッドを取得または設定します。 |
Status |
非同期操作の状態を示す値を取得します。 (継承元 IAsyncInfo) |
メソッド
Cancel() |
非同期操作を取り消します。 (継承元 IAsyncInfo) |
Close() |
非同期操作を閉じます。 (継承元 IAsyncInfo) |
GetResults() |
操作の結果を返します。 |
適用対象
こちらもご覧ください
フィードバック
フィードバックの送信と表示