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::Get | 返回用当前敏捷对象表示的对象的句柄。 |
Agile::GetAddressOf | 重新初始化当前敏捷对象,然后返回类型为 T 的对象的句柄地址。 |
Agile::GetAddressOfForInOut | 将句柄的地址返回到用当前敏捷对象表示的对象。 |
Agile::Release | 放弃当前敏捷对象的基础对象和上下文。 |
公共运算符
“属性” | 描述 |
---|---|
Agile::operator-> | 检索用当前敏捷对象表示的对象的句柄。 |
Agile::operator= | 将指定值分配给当前敏捷对象。 |
继承层次结构
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
模板类型名称参数指定的类型。
object
在此构造函数的第二个版本中,用于初始化新的 Agile 实例的对象。 在第三个版本中,复制到新的 Agile 实例的对象。 在第四个版本中,移动到新的 Agile 实例的对象。
备注
此构造函数的第一个版本是默认构造函数。 第二个版本从 object
参数指定的对象初始化新实例 Agile 类。 第三个版本是复制构造函数。 第四个版本是移动构造函数。 此构造函数不能引发异常。
Agile::~Agile 析构函数
销毁敏捷类的当前实例。
语法
~Agile();
备注
此析构函数也会释放当前敏捷对象表示的对象。
Agile::Get 方法
返回用当前敏捷对象表示的对象的句柄。
语法
T^ Get() const;
返回值
用当前敏捷对象表示的对象的句柄。
返回值的类型实际是未公开的内部类型。 保留返回值的一种简便方式是将它分配给用 auto
类型推导关键字声明的变量。 例如 auto x = myAgileTvariable->Get();
。
Agile::GetAddressOf 方法
重新初始化当前敏捷对象,然后返回类型为 T
的对象的句柄地址。
语法
T^* GetAddressOf() throw();
参数
T
模板类型名称参数指定的类型。
返回值
T
类型的对象的句柄地址。
备注
此操作将释放类型为 T
的对象的当前表示形式(如果存在该对象);重新初始化敏捷对象的数据成员;获取当前的线程处理上下文;然后返回可以表示非敏捷对象的对象句柄变量的地址。 若要使敏捷类实例表示对象,请使用赋值运算符 (Agile::operator=) 将对象分配给敏捷类实例。
Agile::GetAddressOfForInOut 方法
将句柄的地址返回到用当前敏捷对象表示的对象。
语法
T^* GetAddressOfForInOut() throw();
参数
T
模板类型名称参数指定的类型。
返回值
返回到用当前敏捷对象表示的对象的句柄的地址。
备注
此操作获取当前线程上下文,然后将句柄的地址返回到基础对象。
Agile::Release 方法
放弃当前敏捷对象的基础对象和上下文。
语法
void Release() throw();
备注
放弃当前敏捷对象的基础对象和上下文(如果存在),然后将敏捷对象的值设置为 null。
Agile::operator->
运算符
检索用当前敏捷对象表示的对象的句柄。
语法
T^ operator->() const throw();
返回值
用当前敏捷对象表示的对象的句柄。
此运算符实际返回未公开的内部类型。 保留返回值的一种简便方式是将它分配给用 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
模板类型名称指定的类型。
对象
复制或移动到当前敏捷对象的对象或对象句柄。
lp
对象的 IUnknown 接口指针。
返回值
T
类型的对象的句柄
注解
赋值运算符的第一个版本将引用类型的句柄复制到当前敏捷对象。 第二个版本将对敏捷类型的引用复制到当前敏捷对象。 第三个版本将一个敏捷类型移到当前敏捷对象。 第四个版本将 COM 对象的指针移到当前敏捷对象。
赋值操作自动保存当前敏捷对象的上下文。