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


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)

Инициализирует новый экземпляр класса SynchronizationAttribute с использованием флага, задающего поведение объекта, к которому применяется атрибут.

SynchronizationAttribute(Int32, Boolean)

Инициализирует новый экземпляр класса 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)

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