Platform::Agile クラス
アジャイル オブジェクトとして MashalingBehavior=Standard を含むオブジェクトを表します。これはランタイム スレッドの例外の頻度を大幅に減らします。 Agile<T>
を使うと、非アジャイル オブジェクトによる同じスレッドや別のスレッドの呼び出しや、同じスレッドや別のスレッドによる非アジャイル オブジェクトの呼び出しができるようになります。 詳細については、「スレッドとマーシャリング」を参照してください。
構文
template <typename T>
class Agile;
パラメーター
T
非アジャイル クラスの型名です。
解説
Windows ランタイムのクラスのほとんどはアジャイルです。 アジャイル オブジェクトは、同じスレッドまたは別のスレッドのインプロセスまたはアウトプロセス オブジェクトを呼び出すことができます。また、同じスレッドまたは別のスレッドのインプロセスまたはアウトプロセス オブジェクトから呼び出されることもできます。 オブジェクトがアジャイルでない場合、非アジャイル オブジェクトをアジャイルである Agile<T>
オブジェクトにラップします。 その後、 Agile<T>
オブジェクトをマーシャリングしたり、基になる非アジャイル オブジェクトを使ったりできるようになります。
Agile<T>
クラスはネイティブな標準 C++ クラスであり、 agile.h
が必要です。 これは、非アジャイル オブジェクトと、Agile オブジェクトの コンテキストを表します。 コンテキストは、アジャイル オブジェクトのスレッド モデルとマーシャリング動作を指定します。 オペレーティング システムは、コンテキストを使って、オブジェクトをマーシャリングする方法を決定します。
メンバー
パブリック コンストラクター
名前 | 説明 |
---|---|
Agile::Agile | アジャイル クラスの新しいインスタンスを初期化します。 |
Agile::~Agile デストラクター | Agile クラスの現在のインスタンスを破棄します。 |
パブリック メソッド
名前 | 説明 |
---|---|
Agile::Get | 現在の Agile オブジェクトによって表されるオブジェクトへのハンドルを返します。 |
Agile::GetAddressOf | 現在の Agile オブジェクトを再初期化し、 T 型のオブジェクトへのハンドルのアドレスを返します。 |
Agile::GetAddressOfForInOut | 現在の Agile オブジェクトによって表されるオブジェクトへのハンドルのアドレスを返します。 |
Agile::Release | 現在の Agile オブジェクトの基になるオブジェクトとコンテキストを破棄します。 |
パブリック演算子
名前 | 説明 |
---|---|
Agile::operator-> | 現在の Agile オブジェクトによって表されるオブジェクトへのハンドルを取得します。 |
Agile::operator= | 指定された値を現在の Agile オブジェクトに割り当てます。 |
継承階層
Object
Agile
要件
サポートされている最低限のクライアント: Windows 8
サポートされている最低限のサーバー: Windows Server 2012
名前空間: Platform
ヘッダー: agile.h
Agile::Agile コンストラクター
アジャイル クラスの新しいインスタンスを初期化します。
構文
Agile();
Agile(T^ object);
Agile(const Agile<T>& object);
Agile(Agile<T>&& object);
パラメーター
T
テンプレート型名パラメーターで指定される型。
object
このコンストラクターの 2 番目のバージョンでは、新しいアジャイル インスタンスを初期化するために使用されるオブジェクト。 3 番目のバージョンでは、新しいアジャイル インスタンスにコピーされるオブジェクト。 4 番目のバージョンでは、新しいアジャイル インスタンスに移動されるオブジェクト。
解説
このコンストラクターの最初のバージョンは、既定のコンストラクターです。 2 番目のバージョンは、object
パラメーターで指定されたオブジェクトから新しいアジャイル インスタンス クラスを初期化します。 3 番目のバージョンは、コピー コンストラクターです。 4 番目のバージョンは、移動コンストラクターです。 このコンストラクターは例外をスローできません。
Agile::~Agile デストラクター
Agile クラスの現在のインスタンスを破棄します。
構文
~Agile();
解説
このデストラクターは、現在の Agile オブジェクトによって表されるオブジェクトも解放します。
Agile::Get メソッド
現在の Agile オブジェクトによって表されるオブジェクトへのハンドルを返します。
構文
T^ Get() const;
戻り値
現在の Agile オブジェクトによって表されるオブジェクトへのハンドル。
戻り値の型は、実際には非公開の内部型です。 戻り値を保持する便利な方法は、auto
型推論キーワードで宣言された変数に戻り値を代入することです。 たとえば、auto x = myAgileTvariable->Get();
のようにします。
Agile::GetAddressOf メソッド
現在の Agile オブジェクトを再初期化し、 T
型のオブジェクトへのハンドルのアドレスを返します。
構文
T^* GetAddressOf() throw();
パラメーター
T
テンプレート型名パラメーターで指定される型。
戻り値
T
型のオブジェクトへのハンドルのアドレス。
解説
この操作は、 T
型のオブジェクトの現在の表現を解放します。存在する場合は、アジャイル オブジェクトのデータ メンバーを再初期化し、現在のスレッド コンテキストを取得し、非アジャイル オブジェクトを表すことができるハンドルからオブジェクトへの変数のアドレスを返します。 Agile クラス インスタンスが 1 つのオブジェクトを表現するようにするには、代入演算子 (Agile::operator=) を使用して、Agile クラス インスタンスにオブジェクトを代入します。
Agile::GetAddressOfForInOut メソッド
現在の Agile オブジェクトによって表されるオブジェクトへのハンドルのアドレスを返します。
構文
T^* GetAddressOfForInOut() throw();
パラメーター
T
テンプレート型名パラメーターで指定される型。
戻り値
現在の Agile オブジェクトによって表されるオブジェクトへのハンドルのアドレス。
解説
この操作は、現在のスレッドのコンテキストを取得し、基になるオブジェクトへのハンドルのアドレスを返します。
Agile::Release メソッド
現在の Agile オブジェクトの基になるオブジェクトとコンテキストを破棄します。
構文
void Release() throw();
解説
現在の Agile オブジェクトの基になるオブジェクトとコンテキスト (存在する場合) が破棄され、Agile オブジェクトの値が null に設定されます。
Agile::operator->
演算子
現在の Agile オブジェクトによって表されるオブジェクトへのハンドルを取得します。
構文
T^ operator->() const throw();
戻り値
現在の Agile オブジェクトによって表されるオブジェクトへのハンドル。
この演算子は、実際には、非公開の内部型を返します。 戻り値を保持する便利な方法は、auto
型推論キーワードで宣言された変数に戻り値を代入することです。
Agile::operator= 演算子
指定されたオブジェクトを現在のアジャイル オブジェクトに割り当てます。
構文
Agile<T> operator=( T^ object ) throw();
Agile<T> operator=( const Agile<T>& object ) throw();
Agile<T> operator=( Agile<T>&& object ) throw();
T^ operator=( IUnknown* lp ) throw();
パラメーター
T
テンプレート型名で指定される型。
object
現在のアジャイル オブジェクトにコピーまたは移動されるオブジェクト、またはオブジェクトへのハンドル。
lp
オブジェクトの IUnknown インターフェイス ポインター。
戻り値
T
型のオブジェクトへのハンドル。
解説
代入演算子の 1 つ目のバージョンは、参照型へのハンドルを現在のアジャイル オブジェクトにコピーします。 2 つ目のバージョンは、アジャイル型への参照を現在のアジャイル オブジェクトにコピーします。 3 つ目のバージョンは、アジャイル型を現在のアジャイル オブジェクトに移動します。 4 つ目のバージョンは、COM オブジェクトへのポインターを現在のアジャイル オブジェクトに移動します。
代入演算は、現在のアジャイル オブジェクトのコンテキストを自動的に保持します。