Книга: C# для профессионалов. Том II

Атрибуты и свойства

Атрибуты и свойства

Класс атрибута контекста является прежде всего атрибутом. Более подробно можно прочитать об этом в главе 6. Классы атрибутов контекста должны реализовать интерфейс IContextAttribute. Специальный класс атрибута контекста можно вывести из класса ContextAttribute, так как этот класс уже имеет используемую по умолчанию реализацию данного интерфейса.

В .NET Framework содержатся два класса атрибутов контекста: System.Runtime.Remoting.Contexts.SynchronizationAttribute и System.Runtime.Remoting.Contexts.ThreadAffinityAttribute. С помощью атрибута ThreadAffinity можно задать, что только один поток выполнения получает доступ к полям экземпляра и методам ограниченного контекстом класса. Это полезно для объектов интерфейса пользователя, так как дескрипторы окон определяются относительно потока выполнения. Атрибут Synchronization, с другой стороны, определяет требования синхронизации. Здесь можно задать, что несколько потоков выполнения не вправе получить доступ к объекту одновременно, но поток выполнения, получающий доступ к объекту, может меняться.

С помощью этих атрибутов в конструкторе задаются четыре значения:

NOT_SUPPORTED определяет, что экземпляр класса не должен создаваться в контексте, который имеет либо сходство с потоком выполнения, либо с множеством синхронизации.

? REQUIRED устанавливает, что требуется контекст со сходством с потоком выполнения/синхронизацией.

? REQUIRES_NEW всегда обеспечивает получение нового контекста.

? SUPPORTED означает, что независимо от того, какой контекст мы получаем, объект сможет в нем существовать.

Оглавление книги


Генерация: 0.903. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз