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


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 (Задать атрибут потока CLR), чтобы указать модель подразделения.

Ниже перечислены случаи, в которых требуется использовать 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)

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

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