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 对象的指针移到当前敏捷对象。

赋值操作自动保存当前敏捷对象的上下文。

另请参阅

Platform 命名空间