SynchronizationAttribute Класс

Определение

Реализует домен синхронизации для текущего контекста и всех контекстов, совместно использующих один экземпляр.Enforces a synchronization domain for the current context and all contexts that share the same instance.

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
[<System.AttributeUsage(System.AttributeTargets.Class)>]
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type SynchronizationAttribute = class
    inherit ContextAttribute
    interface IContributeClientContextSink
    interface IContributeServerContextSink
Public Class SynchronizationAttribute
Inherits ContextAttribute
Implements IContributeClientContextSink, IContributeServerContextSink
Наследование
SynchronizationAttribute
Атрибуты
Реализации

Примеры

В следующем примере кода показано использование SynchronizationAttribute .The following code example demonstrates the use of the SynchronizationAttribute. Полный пример кода см. в примере для AsyncResult класса.For the complete example code, see the example for the AsyncResult class.

// 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 

Комментарии

Когда этот атрибут применяется к объекту, только один поток может выполняться во всех контекстах, совместно использующих экземпляр этого свойства.When this attribute is applied to an object, only one thread can be executing in all contexts that share an instance of this property. Для этого используются приемники, которые перехватывают и сериализуются входящие вызовы для соответствующих контекстов.This is done by contributing sinks that intercept and serialize incoming calls for the respective contexts. Если свойство помечено для повторного ввода, то выноски также перехватываются.If the property is marked for reentry, then callouts are intercepted too. Перехват выноски позволяет другим ожидающим потокам войти в домен синхронизации для максимальной пропускной способности.The callout interception allows other waiting threads to enter the synchronization domain for maximal throughput.

Примечание

Существует два класса с именами SynchronizationAttribute : один в System.Runtime.Remoting.Contexts пространстве имен, а другой — в System.EnterpriseServices пространстве имен.There are two classes named SynchronizationAttribute : one in the System.Runtime.Remoting.Contexts namespace, and the other in the System.EnterpriseServices namespace. System.EnterpriseServices.SynchronizationAttributeКласс поддерживает только синхронные вызовы и может использоваться только с обслуживаемыми компонентами.The System.EnterpriseServices.SynchronizationAttribute class supports only synchronous calls, and can be used only with serviced components. System.Runtime.Remoting.Contexts.SynchronizationAttributeПоддерживает как синхронные, так и асинхронные вызовы и может использоваться только с объектами, привязанными к контексту.The System.Runtime.Remoting.Contexts.SynchronizationAttribute supports both synchronous and asynchronous calls, and can be used only with context bound objects. (Дополнительные сведения об объектах, привязанных к контексту, см. в разделе ContextBoundObject класс.)(For more information on context bound objects, see the ContextBoundObject class.)

Примечание

Этот класс выполняет запрос компоновки и требование наследования на уровне класса.This class makes a link demand and an inheritance demand at the class level. SecurityExceptionИсключение возникает, если непосредственный вызывающий объект или производный класс не имеет разрешения инфраструктуры.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Дополнительные сведения о требованиях безопасности см. в разделе требования связывания и требования наследования.For details about security demands, see Link Demands and Inheritance Demands.

Конструкторы

SynchronizationAttribute()

Инициализирует новый экземпляр класса SynchronizationAttribute со значениями по умолчанию.Initializes a new instance of the SynchronizationAttribute class with default values.

SynchronizationAttribute(Boolean)

Инициализирует новый экземпляр класса SynchronizationAttribute с использованием логического значения, указывающего, требуется ли повторный вход.Initializes a new instance of the SynchronizationAttribute class with a Boolean value indicating whether reentry is required.

SynchronizationAttribute(Int32)

Инициализирует новый экземпляр класса SynchronizationAttribute с использованием флага, задающего поведение объекта, к которому применяется атрибут.Initializes a new instance of the SynchronizationAttribute class with a flag indicating the behavior of the object to which this attribute is applied.

SynchronizationAttribute(Int32, Boolean)

Инициализирует новый экземпляр класса SynchronizationAttribute с использованием флага, задающего поведение объекта, к которому применяется атрибут, и логического значения, указывающего на то, требуется ли повторный вход.Initializes a new instance of the SynchronizationAttribute class with a flag indicating the behavior of the object to which this attribute is applied, and a Boolean value indicating whether reentry is required.

Поля

AttributeName

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Указывает имя атрибута контекста.Indicates the name of the context attribute.

(Унаследовано от ContextAttribute)
NOT_SUPPORTED

Указывает, что класс, к которому применяется этот атрибут, не может быть создан в контексте, имеющем синхронизацию.Indicates that the class to which this attribute is applied cannot be created in a context that has synchronization. Это поле является константой.This field is constant.

REQUIRED

Указывает, что класс, к которому применяется этот атрибут, должен создаваться в контексте, имеющем синхронизацию.Indicates that the class to which this attribute is applied must be created in a context that has synchronization. Это поле является константой.This field is constant.

REQUIRES_NEW

Указывает, что класс, к которому применяется этот атрибут, должен создаваться каждый раз в контексте с новым экземпляром свойства синхронизации.Indicates that the class to which this attribute is applied must be created in a context with a new instance of the synchronization property each time. Это поле является константой.This field is constant.

SUPPORTED

Указывает, что класс, к которому применяется этот атрибут, не зависит от того, имеет ли контекст синхронизацию.Indicates that the class to which this attribute is applied is not dependent on whether the context has synchronization. Это поле является константой.This field is constant.

Свойства

IsReEntrant

Возвращает или задает логическое значение, указывающее, требуется ли повторный ввод.Gets or sets a Boolean value indicating whether reentry is required.

Locked

Возвращает или задает логическое значение, указывающее, заблокирован ли Context, реализующий экземпляр атрибута SynchronizationAttribute .Gets or sets a Boolean value indicating whether the Context implementing this instance of SynchronizationAttribute is locked.

Name

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает имя атрибута контекста.Gets the name of the context attribute.

(Унаследовано от ContextAttribute)
TypeId

В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Унаследовано от Attribute)

Методы

Equals(Object)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает логическое значение, указывающее, равен ли данный экземпляр заданному объекту.Returns a Boolean value indicating whether this instance is equal to the specified object.

(Унаследовано от ContextAttribute)
Freeze(Context)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Вызывается, если контекст заморожен.Called when the context is frozen.

(Унаследовано от ContextAttribute)
GetClientContextSink(IMessageSink)

Создает приемник внешних вызовов и добавляет его в качестве первого звена к предоставленной цепочке приемников на контекстной границе на клиентской стороне вызова удаленного взаимодействия.Creates a CallOut sink and chains it in front of the provided chain of sinks at the context boundary on the client end of a remoting call.

GetHashCode()

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает хэш-код данного экземпляра атрибута ContextAttribute.Returns the hashcode for this instance of ContextAttribute.

(Унаследовано от ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Добавляет контекстное свойство Synchronized в указанное сообщение IConstructionCallMessage .Adds the Synchronized context property to the specified IConstructionCallMessage.

GetServerContextSink(IMessageSink)

Создает синхронизированный диспетчерский приемник и добавляет его в качестве первого звена к предоставленной цепочке приемников на границе контекста на серверной стороне вызова удаленного взаимодействия.Creates a synchronized dispatch sink and chains it in front of the provided chain of sinks at the context boundary on the server end of a remoting call.

GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
IsContextOK(Context, IConstructionCallMessage)

Возвращает логическое значение, указывающее, удовлетворяет ли параметр контекста требованиям атрибута контекста.Returns a Boolean value indicating whether the context parameter meets the context attribute's requirements.

IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Унаследовано от Attribute)
IsNewContextOK(Context)

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Возвращает логическое значение, указывающее, совместимо ли контекстное свойство с новым контекстом.Returns a Boolean value indicating whether the context property is compatible with the new context.

(Унаследовано от ContextAttribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Явные реализации интерфейса

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Унаследовано от Attribute)

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