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


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-взаимодействие не используется, поток не инициализирован, а MTAThreadAttribute атрибут, если он присутствует, не имеет эффекта.

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

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

Чтобы изменить эти значения по умолчанию, используйте MTAThreadAttribute атрибут для задания модели потоков для приложения или вызова Thread.SetApartmentStateThread.TrySetApartmentState метода перед запуском потока, чтобы задать модель потоков для определенного потока. В C++можно также использовать параметр компоновщика /CLRREADATTRIBUTE (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)

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

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