Поделиться через


Класс Platform::Agile

Представляет объект, имеющий MashalingBehavior = Standard, как объект Agile, который значительно снижает вероятность возникновения в среде выполнения исключений, связанных с потоками. Agile<T> позволяет объекту, отличному от Agile, вызывать тот же или другой поток или быть вызванным из этих потоков. Дополнительные сведения см. в разделе "Потоки и маршалинг".

Синтаксис

template <typename T>
class Agile;

Параметры

T
Имя типа для класса, отличного от Agile.

Замечания

Большинство классов в среда выполнения Windows являются гибкими. Объект Agile может вызывать внутрипроцессный или внепроцессный объект либо быть вызванным таким объектом в том же или другом потоке. Если объект не является объектом гибкой разработки, заключите его в объект Agile<T> , который является объектом гибкой разработки. После этого объект Agile<T> можно маршалировать, используя таким образом базовый объект, отличный от Agile.

Класс Agile<T> — это стандартный класс неуправляемого кода C++, для которого требуется включаемый файл agile.h. Он представляет объект, отличный от Agile, и контекстобъекта Agile. Контекст задает потоковую модель объекта 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
Тип, указанный в параметре имени типа шаблона.

object
Во второй версии данного конструктора: объект, используемый для инициализации нового экземпляра класса Agile. В третьей версии: объект, который копируется в новый экземпляр класса Agile. В четвертой версии: объект, который перемещается в новый экземпляр класса Agile.

Замечания

Первая версия этого конструктора является конструктором по умолчанию. Вторая версия инициализирует новый экземпляра класса Agile из объекта, указанного параметром object. Третья версия является конструктором копирования. Четвертая версия является конструктором перемещения. Этот конструктор не может вызывать исключения.

Деструктор 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; получает текущий контекст потоковой обработки, а затем возвращает адрес переменной дескриптора к объекту, которая может представлять не гибкий объект. Чтобы привести экземпляр класса Agile к представлению объекта, используйте оператор назначения (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.

Синтаксис

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
Объект или дескриптор объекта, который копируется или перемещается в текущий объект Agile.

lp
Указатель интерфейса IUnknown объекта.

Возвращаемое значение

Дескриптор для объекта типа T

Замечания

Первая версия оператора присваивания копирует дескриптор ссылочного типа в текущий объект Agile. Вторая версия копирует ссылку на тип Agile в текущий объект Agile. Третья версия перемещает тип Agile в текущий объект Agile. Четвертая версия перемещает указатель на COM-объект в текущий объект Agile.

Операция присваивания автоматически сохраняет контекст текущего объекта Agile.

См. также

Пространство имен платформы