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
- Наследование
- Атрибуты
Комментарии
Примените этот атрибут к методу точки входа (метод 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) |