SynchronizationAttribute Clase

Definición

Impone un dominio de sincronización para el contexto actual y todos los contextos que compartan la misma instancia.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
Herencia
SynchronizationAttribute
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra el uso de SynchronizationAttribute .The following code example demonstrates the use of the SynchronizationAttribute. Para obtener el código de ejemplo completo, vea el ejemplo de la AsyncResult clase.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 

Comentarios

Cuando este atributo se aplica a un objeto, solo se puede ejecutar un subproceso en todos los contextos que comparten una instancia de esta propiedad.When this attribute is applied to an object, only one thread can be executing in all contexts that share an instance of this property. Esto se realiza mediante la contribución de receptores que interceptan y serializan las llamadas entrantes de los contextos respectivos.This is done by contributing sinks that intercept and serialize incoming calls for the respective contexts. Si la propiedad está marcada para reentrada, las llamadas también se interceptan.If the property is marked for reentry, then callouts are intercepted too. La intercepción de llamada permite a otros subprocesos en espera entrar en el dominio de sincronización para obtener el máximo rendimiento.The callout interception allows other waiting threads to enter the synchronization domain for maximal throughput.

Nota

Hay dos clases denominadas SynchronizationAttribute : una en el System.Runtime.Remoting.Contexts espacio de nombres y la otra en el System.EnterpriseServices espacio de nombres.There are two classes named SynchronizationAttribute : one in the System.Runtime.Remoting.Contexts namespace, and the other in the System.EnterpriseServices namespace. La System.EnterpriseServices.SynchronizationAttribute clase solo admite llamadas sincrónicas y solo se puede usar con componentes con servicio.The System.EnterpriseServices.SynchronizationAttribute class supports only synchronous calls, and can be used only with serviced components. System.Runtime.Remoting.Contexts.SynchronizationAttributeAdmite llamadas sincrónicas y asincrónicas y solo se puede usar con objetos enlazados a un contexto.The System.Runtime.Remoting.Contexts.SynchronizationAttribute supports both synchronous and asynchronous calls, and can be used only with context bound objects. (Para obtener más información sobre los objetos enlazados a un contexto, vea la ContextBoundObject clase).(For more information on context bound objects, see the ContextBoundObject class.)

Nota

Esta clase realiza una petición de vínculo y una petición de herencia en el nivel de clase.This class makes a link demand and an inheritance demand at the class level. SecurityExceptionSe produce una excepción cuando el llamador inmediato o la clase derivada no tienen permiso de infraestructura.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Para obtener más información sobre las demandas de seguridad, consulte peticiones de vínculo y peticiones de herencia.For details about security demands, see Link Demands and Inheritance Demands.

Constructores

SynchronizationAttribute()

Inicializa una nueva instancia de la clase SynchronizationAttribute con valores predeterminados.Initializes a new instance of the SynchronizationAttribute class with default values.

SynchronizationAttribute(Boolean)

Inicializa una nueva instancia de la clase SynchronizationAttribute con un valor booleano que indica si se requiere la reentrada.Initializes a new instance of the SynchronizationAttribute class with a Boolean value indicating whether reentry is required.

SynchronizationAttribute(Int32)

Inicializa una nueva instancia de la clase SynchronizationAttribute con un marcador que muestra el comportamiento del objeto al que se aplica este atributo.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)

Inicializa una nueva instancia de la clase SynchronizationAttribute con un marcador que muestra el comportamiento del objeto al que se aplica este atributo y un valor booleano que indica si se requiere la reentrada.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.

Campos

AttributeName

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Indica el nombre del atributo de contexto.Indicates the name of the context attribute.

(Heredado de ContextAttribute)
NOT_SUPPORTED

Indica que la clase a la que se aplica este atributo no se puede crear en un contexto que tenga sincronización.Indicates that the class to which this attribute is applied cannot be created in a context that has synchronization. Este campo es constante.This field is constant.

REQUIRED

Indica que la clase a la que se aplica este atributo se debe crear en un contexto que tenga sincronización.Indicates that the class to which this attribute is applied must be created in a context that has synchronization. Este campo es constante.This field is constant.

REQUIRES_NEW

Indica que la clase a la que se aplica este atributo se debe crear en un contexto con una nueva instancia de la propiedad de sincronización cada vez.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. Este campo es constante.This field is constant.

SUPPORTED

Indica que la clase a la que se aplica este atributo no depende de si el contexto tiene sincronización.Indicates that the class to which this attribute is applied is not dependent on whether the context has synchronization. Este campo es constante.This field is constant.

Propiedades

IsReEntrant

Obtiene o establece un valor booleano que indica si se requiere la reentrada.Gets or sets a Boolean value indicating whether reentry is required.

Locked

Obtiene o establece un valor booleano que indica si el Context que implementa esta instancia de SynchronizationAttribute está bloqueado.Gets or sets a Boolean value indicating whether the Context implementing this instance of SynchronizationAttribute is locked.

Name

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obtiene el nombre del atributo de contexto.Gets the name of the context attribute.

(Heredado de ContextAttribute)
TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Heredado de Attribute)

Métodos

Equals(Object)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Devuelve un valor booleano que indica si la instancia es igual al objeto especificado.Returns a Boolean value indicating whether this instance is equal to the specified object.

(Heredado de ContextAttribute)
Freeze(Context)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Se llama a este método cuando se inmoviliza el contexto.Called when the context is frozen.

(Heredado de ContextAttribute)
GetClientContextSink(IMessageSink)

Crea un receptor de CallOut y lo antepone a la cadena de receptores proporcionada en el límite del contexto en el cliente de una llamada de comunicación remota.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()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Devuelve el código hash de esta instancia de ContextAttribute.Returns the hashcode for this instance of ContextAttribute.

(Heredado de ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Agrega la propiedad de contexto Synchronized al IConstructionCallMessage especificado.Adds the Synchronized context property to the specified IConstructionCallMessage.

GetServerContextSink(IMessageSink)

Crea un receptor de envío sincronizado y lo antepone a la cadena de receptores proporcionada en el límite del contexto en el servidor de una llamada de comunicación remota.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()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
IsContextOK(Context, IConstructionCallMessage)

Devuelve un valor booleano que indica si el parámetro de contexto cumple los requisitos del atributo de contexto.Returns a Boolean value indicating whether the context parameter meets the context attribute's requirements.

IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Heredado de Attribute)
IsNewContextOK(Context)

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Devuelve un valor booleano que indica si la propiedad de contexto es compatible con el nuevo contexto.Returns a Boolean value indicating whether the context property is compatible with the new context.

(Heredado de ContextAttribute)
Match(Object)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Implementaciones de interfaz explícitas

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

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.Maps a set of names to a corresponding set of dispatch identifiers.

(Heredado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Heredado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Heredado de Attribute)

Se aplica a