Бөлісу құралы:


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
Атрибуты
Реализации

Примеры

В следующем примере кода показано использование 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)

Добавляет свойство контекста Synchronized в указанный 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)

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