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