SynchronizationAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Применяет домен синхронизации для текущего контекста и всех контекстов, использующих один и тот же экземпляр.
public ref class SynchronizationAttribute : System::Runtime::Remoting::Contexts::ContextAttribute, System::Runtime::Remoting::Contexts::IContributeClientContextSink, System::Runtime::Remoting::Contexts::IContributeServerContextSink
[System.AttributeUsage(System.AttributeTargets.Class)]
[System.Serializable]
public class SynchronizationAttribute : System.Runtime.Remoting.Contexts.ContextAttribute, System.Runtime.Remoting.Contexts.IContributeClientContextSink, System.Runtime.Remoting.Contexts.IContributeServerContextSink
[System.AttributeUsage(System.AttributeTargets.Class)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class SynchronizationAttribute : System.Runtime.Remoting.Contexts.ContextAttribute, System.Runtime.Remoting.Contexts.IContributeClientContextSink, System.Runtime.Remoting.Contexts.IContributeServerContextSink
[System.AttributeUsage(System.AttributeTargets.Class)]
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
public class SynchronizationAttribute : System.Runtime.Remoting.Contexts.ContextAttribute, System.Runtime.Remoting.Contexts.IContributeClientContextSink, System.Runtime.Remoting.Contexts.IContributeServerContextSink
[<System.AttributeUsage(System.AttributeTargets.Class)>]
[<System.Serializable>]
type SynchronizationAttribute = class
inherit ContextAttribute
interface IContributeServerContextSink
interface IContributeClientContextSink
[<System.AttributeUsage(System.AttributeTargets.Class)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SynchronizationAttribute = class
inherit ContextAttribute
interface IContributeServerContextSink
interface IContributeClientContextSink
[<System.AttributeUsage(System.AttributeTargets.Class)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Security.SecurityCritical>]
type SynchronizationAttribute = class
inherit ContextAttribute
interface IContributeServerContextSink
interface IContributeClientContextSink
Public Class SynchronizationAttribute
Inherits ContextAttribute
Implements IContributeClientContextSink, IContributeServerContextSink
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере кода показано использование SynchronizationAttribute. Полный пример кода см. в примере для AsyncResult класса.
// Context-bound type with the Synchronization context attribute.
[Synchronization]
public ref class SampleSynchronized: public ContextBoundObject
{
public:
// A method that does some work, and returns the square of the given number.
int Square( int i )
{
Console::Write( "The hash of the thread executing " );
Console::WriteLine( "SampleSynchronized::Square is: {0}", Thread::CurrentThread->GetHashCode() );
return i * i;
}
};
// Context-bound type with the Synchronization context attribute.
[Synchronization()]
public class SampleSynchronized : ContextBoundObject {
// A method that does some work, and returns the square of the given number.
public int Square(int i) {
Console.Write("The hash of the thread executing ");
Console.WriteLine("SampleSynchronized.Square is: {0}",
Thread.CurrentThread.GetHashCode());
return i*i;
}
}
' Context-bound type with the Synchronization context attribute.
<Synchronization()> Public Class SampleSynchronized
Inherits ContextBoundObject
' A method that does some work, and returns the square of the given number.
Public Function Square(i As Integer) As Integer
Console.Write("The hash of the thread executing ")
Console.WriteLine("SampleSynchronized.Square is: {0}", Thread.CurrentThread.GetHashCode())
Return i * i
End Function
End Class
Комментарии
При применении этого атрибута к объекту может выполняться только один поток во всех контекстах, которые совместно используют экземпляр этого свойства. Это делается путем добавления приемников, которые перехватывают и сериализируют входящие вызовы для соответствующих контекстов. Если свойство помечается для повторного приема, то выноски перехватываются тоже. Перехват выноски позволяет другим потокам ожидания ввести домен синхронизации для максимальной пропускной способности.
Замечание
В пространстве имен есть два класса SynchronizationAttribute : один в System.Runtime.Remoting.Contexts пространстве имен, а другой — в System.EnterpriseServices пространстве имен. Класс System.EnterpriseServices.SynchronizationAttribute поддерживает только синхронные вызовы и может использоваться только с сервисными компонентами. Поддерживает System.Runtime.Remoting.Contexts.SynchronizationAttribute синхронные и асинхронные вызовы и может использоваться только с связанными контекстом объектами. (Дополнительные сведения о связанных контекстах объектов см. в ContextBoundObject классе.)
Замечание
Этот класс делает спрос на связь и спрос на наследование на уровне класса. Возникает SecurityException , если непосредственный вызывающий или производный класс не имеют разрешения инфраструктуры. Дополнительные сведения о требованиях к безопасности см. в разделе "Требования ссылки".
Конструкторы
| Имя | Описание |
|---|---|
| SynchronizationAttribute() |
Инициализирует новый экземпляр SynchronizationAttribute класса со значениями по умолчанию. |
| SynchronizationAttribute(Boolean) |
Инициализирует новый экземпляр SynchronizationAttribute класса с логическим значением, указывающим, требуется ли повторное выполнение. |
| SynchronizationAttribute(Int32, Boolean) |
Инициализирует новый экземпляр SynchronizationAttribute класса с флагом, указывающим поведение объекта, к которому применяется этот атрибут, и логическое значение, указывающее, требуется ли повторное выполнение. |
| SynchronizationAttribute(Int32) |
Инициализирует новый экземпляр SynchronizationAttribute класса с флагом, указывающим поведение объекта, к которому применяется этот атрибут. |
Поля
| Имя | Описание |
|---|---|
| AttributeName |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Указывает имя атрибута контекста. (Унаследовано от ContextAttribute) |
| NOT_SUPPORTED |
Указывает, что класс, к которому применяется этот атрибут, нельзя создать в контексте с синхронизацией. Это поле является константой. |
| REQUIRED |
Указывает, что класс, к которому применяется этот атрибут, должен быть создан в контексте с синхронизацией. Это поле является константой. |
| REQUIRES_NEW |
Указывает, что класс, к которому применяется этот атрибут, должен быть создан в контексте с новым экземпляром свойства синхронизации каждый раз. Это поле является константой. |
| SUPPORTED |
Указывает, что класс, к которому применяется этот атрибут, не зависит от того, имеет ли контекст синхронизацию. Это поле является константой. |
Свойства
| Имя | Описание |
|---|---|
| IsReEntrant |
Возвращает или задает логическое значение, указывающее, требуется ли повторное выполнение. |
| Locked |
Возвращает или задает логическое значение, указывающее, заблокирован ли Context этот экземпляр SynchronizationAttribute . |
| Name |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Возвращает имя атрибута контекста. (Унаследовано от ContextAttribute) |
| TypeId |
При реализации в производном классе получает уникальный идентификатор для этого Attribute. (Унаследовано от Attribute) |
Методы
| Имя | Описание |
|---|---|
| Equals(Object) |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Возвращает логическое значение, указывающее, равен ли этот экземпляр указанному объекту. (Унаследовано от ContextAttribute) |
| Freeze(Context) |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Вызывается при замороженном контексте. (Унаследовано от ContextAttribute) |
| GetClientContextSink(IMessageSink) |
Создает приемник выноски и цепляет его перед предоставленной цепочкой приемников в границах контекста в конце клиента удаленного вызова. |
| GetHashCode() |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Возвращает хэш-код для этого экземпляра ContextAttribute. (Унаследовано от ContextAttribute) |
| GetPropertiesForNewContext(IConstructionCallMessage) |
Добавляет свойство контекста |
| GetServerContextSink(IMessageSink) |
Создает синхронизированный приемник диспетчера и цепирует его перед предоставленной цепочкой приемников на границе контекста на конце сервера удаленного вызова. |
| GetType() |
Возвращает Type текущего экземпляра. (Унаследовано от Object) |
| IsContextOK(Context, IConstructionCallMessage) |
Возвращает логическое значение, указывающее, соответствует ли параметр контекста требованиям атрибута контекста. |
| IsDefaultAttribute() |
При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute) |
| IsNewContextOK(Context) |
Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода. Возвращает логическое значение, указывающее, совместимо ли свойство контекста с новым контекстом. (Унаследовано от ContextAttribute) |
| 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) |