Platform::Agile 類別
以 Agile 物件來表示具有 MashalingBehavior=Standard 的物件,可大幅降低發生執行階段執行緒例外狀況的機會。 Agile<T>
可讓非 Agile 物件呼叫相同或不同的執行緒,或者從中被呼叫。 如需詳細資訊,請參閱 線程處理和封送處理。
語法
template <typename T>
class Agile;
參數
T
非 Agile 類別的 typename。
備註
Windows 執行階段 中的大部分類別都是敏捷式的。 Agile 物件可以在相同或不同的執行緒中呼叫同處理序或跨處理序物件,或者從中被呼叫。 如果物件不是 Agile,請將非 Agile 物件包裝在 Agile 的 Agile<T>
物件中。 這樣就可以封送處理 Agile<T>
物件,且可以使用基礎的非 Agile 物件。
Agile<T>
類別是原生、標準 C++ 類別,需要 agile.h
。 它代表非 Agile 物件和 Agile 物件的 「內容」(context)。 內容指定 Agile 物件的執行緒模型和封送處理行為。 作業系統使用內容來決定如何將物件封送處理。
成員
公用建構函式
名稱 | 描述 |
---|---|
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();
Agile(T^ object);
Agile(const Agile<T>& object);
Agile(Agile<T>&& object);
參數
T
樣板 typename 參數指定的類型。
object
在此建構函式的第二個版本中,是用來初始化新 Agile 執行個體的物件。 在第三個版本中,是複製到新 Agile 執行個體的物件。 在第四個版本中,是移動到新 Agile 執行個體的物件。
備註
此建構函式的第一個版本是預設建構函式。 第二個版本從 object
參數指定之物件,初始化新的 Agile 執行個體類別。 第三個版本是複製建構函式。 第四個版本是移動建構函式。 這個建構函式不會擲回例外狀況。
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
樣板 typename 參數指定的類型。
傳回值
T
類型物件的控制代碼位址。
備註
此作業會釋放 類型 T
物件的目前表示法,如果有的話;重新初始化 Agile 對象的數據成員;取得目前的線程內容;然後傳回可代表非敏捷式物件的句柄對物件變數位址。 若要讓 Agile 類別實例代表物件,請使用指派運算符 (Agile::operator=) 將物件指派給 Agile 類別實例。
Agile:: getaddressofforinout 方法
傳回目前 Agile 物件所代表的物件的控制代碼位址。
語法
T^* GetAddressOfForInOut() throw();
參數
T
樣板 typename 參數指定的類型。
傳回值
目前 Agile 物件所代表的物件的控制代碼位址。
備註
這個作業取得目前執行緒的內容,然後傳回基礎物件的控制代碼位址。
Agile::Release 方法
捨棄目前 Agile 物件的基礎物件和內容。
語法
void Release() throw();
備註
捨棄目前 Agile 物件的基礎物件和內容 (如果存在的話),然後將 Agile 物件的值設為 null。
Agile::operator->
運算子
擷取目前 Agile 物件所代表的物件控制代碼。
語法
T^ operator->() const throw();
傳回值
目前 Agile 物件所代表的物件控制代碼。
這個運算子實際傳回保密的內部類型。 保存傳回值的便利方式是將它指派給以類型推算關鍵詞宣告的 auto
變數。
Agile::operator= 運算子
將指定的物件指派給目前 Agile 物件。
語法
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
typename 樣板指定的類型。
object
複製或移至目前 Agile 物件的物件或物件控制代碼。
lp
物件的 IUnknown 介面指標。
傳回值
T
類型物件的控制代碼
備註
指派運算子的第一個版本會將參考類型的控制代碼複製到目前 Agile 物件。 第二個版本複製 Agile 類型的參考至目前 Agile 物件。 第三個版本移動 Agile 類型至目前 Agile 物件。 第四個版本移動 COM 物件的指標至目前 Agile 物件。
指派作業會自動保存目前 Agile 物件的內容。