Класс 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.