MTAThreadAttribute Класс

Определение

Указывает на то, что потоковой моделью COM для приложения является многопотоковое подразделение (MTA).

public ref class MTAThreadAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
public sealed class MTAThreadAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Method)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class MTAThreadAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
type MTAThreadAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Method)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type MTAThreadAttribute = class
    inherit Attribute
Public NotInheritable Class MTAThreadAttribute
Inherits Attribute
Наследование
MTAThreadAttribute
Атрибуты

Комментарии

Примените этот атрибут к методу точки входа (Main()метод в C# и Visual Basic). Он не оказывает влияния на другие методы. Чтобы задать состояние квартиры потоков, которые вы запускаете в коде, используйте Thread.SetApartmentState метод или Thread.TrySetApartmentState метод перед запуском потока.

Примечание

Общие сведения о моделях потоков COM см. в разделе "Основные сведения и использование моделей потоков COM".

Модели потоков COM применяются только к приложениям, используюющим COM-взаимодействие. Модель потоков COM может быть задана как однопоточная или многопоточная квартира. Поток приложения инициализируется только для COM-взаимодействия, если поток фактически вызывает com-компонент. Если com-взаимодействие не используется, поток не инициализируется и MTAThreadAttribute атрибут, если он присутствует, не оказывает никакого влияния.

Начиная с платформа .NET Framework версии 2.0 модель потоков по умолчанию для COM-взаимодействия зависит от языка разработки приложения, как показано в следующей таблице.

Язык Модель квартиры COM
C# Многопоточность квартиры
C++ Многопоточность квартиры
Visual Basic Однопотоковая квартира

Чтобы изменить эти значения по умолчанию, используйте MTAThreadAttribute атрибут, чтобы задать модель потоков для приложения или вызвать Thread.SetApartmentState Thread.TrySetApartmentState метод перед запуском потока, чтобы задать модель потоков для определенного потока. В C++ можно также использовать параметр компоновщика /CLRTHREADATTRIBUTE (Set CLR Thread Attribute) для указания модели квартиры.

В некоторых случаях, когда вы хотите использовать MTAThreadAttribute атрибут для явной установки многопоточной модели на многопоточность квартиры, выполните следующие действия.

  • Вы разрабатываете приложение Visual Basic, которое вызывает библиотеку C#, которая, в свою очередь, использует COM-взаимодействие. Так как многопоточность модели квартиры используется по умолчанию для C#, следует изменить потоковую модель приложения на многопоточность с помощью атрибута MTAThreadAttribute .

  • Приложение выполняет вызовы com-компонентов, использующих многопототочную модель квартиры.

Конструкторы

MTAThreadAttribute()

Инициализирует новый экземпляр класса MTAThreadAttribute.

Свойства

TypeId

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

(Унаследовано от Attribute)

Методы

Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код данного экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.

(Унаследовано от Attribute)

Применяется к

См. также раздел