IAsyncAction インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
非同期アクションを表します。 これは、結果オブジェクトがなく、進行中の進行状況を報告しない多くの Windows ランタイム (WinRT) 非同期メソッドの戻り値の型です。
public interface class IAsyncAction : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
struct IAsyncAction : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(1516535814, 33850, 19881, 134, 91, 157, 38, 229, 223, 173, 123)]
public interface IAsyncAction : IAsyncInfo
Public Interface IAsyncAction
Implements IAsyncInfo
- 派生
- 属性
- 実装
Windows の要件
デバイス ファミリ |
Windows 10 (10.0.10240.0 で導入)
|
API contract |
Windows.Foundation.FoundationContract (v1.0 で導入)
|
注釈
IAsyncAction
は、結果オブジェクトまたは進行中の進行状況を伝えないすべての WinRT 非同期メソッドの戻り値の型です。 これは、300 を超える異なる WinRT API を構成します。 進行状況を報告するが結果が得られない API は、IAsyncActionWithProgress
アプリ コードで IAsyncAction
を返すメソッドを使用する場合、通常、IAsyncAction
戻り値には直接アクセスしません。 これは、ほとんどの場合、言語固有の待機可能な構文を使用するためです。 この場合、メソッドの明らかな戻り値は void
IAsyncAction
は、CoreDispatcher.RunAsync や ThreadPool.RunAsyncなど、一部の高度なシナリオユーティリティ API の入力の種類でもあります。
言語固有の待機可能な構文を使用しない場合でも、IAsyncAction
を直接使用することは一般的ではありません。 各言語には、WinRT インターフェイスよりも一般的に使いやすい拡張ポイントがあります。 JavaScript には、WinJS.Promiseと IAsyncAction
を Taskに変換すると、キャンセルや完了時の通知の取得などが簡単になります。 C++/CX の場合は、コンカレンシー ランタイム を使用して呼び出しをラップできます (また、create_taskを使用します)。 つまり、IAsyncAction
はランタイム レベルのインフラストラクチャと見なすことができます。各言語は、待機可能な構文または非同期プログラミング モデルを独自の方法でサポートするためのフレームワークとして使用されます。
一部の WinRT 非同期メソッドでは、IAsyncAction
を使用する代わりに、カスタム アクションの種類 (名前に "Action" ではなく "Operation" が含まれる場合があります) が使用されます。 たとえば、SignOutUserOperation
.NET Task
を返すメソッドがあり、WinRT API に渡す IAsyncAction
が必要な場合は、AsAsyncAction 拡張メソッドを使用できます。
C++/WinRT 拡張機能関数
手記
拡張関数は、特定の WinRT API の C++/WinRT プロジェクション型に存在します。 たとえば、winrt::Windows::Foundation::IAsyncAction
は、IAsyncAction
の C++/WinRT プロジェクションの種類です。 拡張機能関数は、実際の WinRT 型のアプリケーション バイナリ インターフェイス (ABI) サーフェスの一部ではないため、WinRT API のメンバーとして一覧表示されません。 ただし、任意の C++/WinRT プロジェクト内から呼び出すことができます。 Windows ランタイム APIを拡張する C++/WinRT 関数の
void get() const;
アクションが完了するまで同期的に待機します。 アクションが取り消された場合、またはエラー状態になった場合は、対応する例外をスローします。 シングルスレッド アパートメントから呼び出すことはできません。 詳細と、
AsyncStatus wait_for(TimeSpan const& timeout) const;
アクションが完了するか、指定されたタイムアウトまで同期的に待機します。 タイムアウトが経過した場合は、wait_for
を呼び出す方法を示すコード例については、「非同期タイムアウト 簡単にする」を参照してください。
インターフェイスの継承
IAsyncAction
実装する型は、IAsyncInfoのインターフェイス メンバーも実装します。
実装者へのメモ
既存のメソッドの呼び出しと同様に、IAsyncInfo を直接使用しない非同期メソッド Task
/task
を使用できますが、パブリック メソッド用の WinRT インターフェイスのいずれかを返す必要があります。 言語固有の非同期サポート型 (および従来コードで使用する可能性がある他の多くの言語固有の型) は、WinRT コンポーネントのパブリック 領域には使用できません。
プロパティ
Completed |
アクションの完了時に呼び出されるデリゲートを取得または設定します。 |
ErrorCode |
非同期操作のエラー条件を記述する文字列を取得します。 (継承元 IAsyncInfo) |
Id |
非同期操作のハンドルを取得します。 (継承元 IAsyncInfo) |
Status |
非同期操作の状態を示す値を取得します。 (継承元 IAsyncInfo) |
メソッド
Cancel() |
非同期操作を取り消します。 (継承元 IAsyncInfo) |
Close() |
非同期操作を閉じます。 (継承元 IAsyncInfo) |
GetResults() |
アクションの結果を返します。 |