Comparteix a través de


SynchronizationAttribute Clase

Definición

Impone un dominio de sincronización para el contexto actual y todos los contextos que compartan la misma instancia.

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
Herencia
SynchronizationAttribute
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se muestra el uso de SynchronizationAttribute. Para obtener el código de ejemplo completo, vea el ejemplo de la AsyncResult clase .

// 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. Esto se hace contribuyendo a receptores que interceptan y serializan las llamadas entrantes para los contextos respectivos. Si la propiedad está marcada para reentrada, las llamadas también se interceptan. La interceptación de la llamada permite que otros subprocesos en espera entren en el dominio de sincronización para obtener un rendimiento máximo.

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 . La System.EnterpriseServices.SynchronizationAttribute clase solo admite llamadas sincrónicas y solo se puede usar con componentes con servicio. System.Runtime.Remoting.Contexts.SynchronizationAttribute admite llamadas sincrónicas y asincrónicas, y solo se puede usar con objetos enlazados al contexto. (Para obtener más información sobre los objetos enlazados al contexto, vea la ContextBoundObject clase ).

Nota

Esta clase realiza una demanda de vínculo y una demanda de herencia en el nivel de clase. SecurityException Se produce una excepción cuando el llamador inmediato o la clase derivada no tienen permiso de infraestructura. Para obtener más información sobre las demandas de seguridad, consulte Demandas de vínculo y demandas de herencia.

Constructores

SynchronizationAttribute()

Inicializa una nueva instancia de la clase SynchronizationAttribute con valores predeterminados.

SynchronizationAttribute(Boolean)

Inicializa una nueva instancia de la clase SynchronizationAttribute con un valor booleano que indica si se requiere la reentrada.

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.

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.

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.

(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. Este campo es constante.

REQUIRED

Indica que la clase a la que se aplica este atributo se debe crear en un contexto que tenga sincronización. Este campo es constante.

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. Este campo es constante.

SUPPORTED

Indica que la clase a la que se aplica este atributo no depende de si el contexto tiene sincronización. Este campo es constante.

Propiedades

IsReEntrant

Obtiene o establece un valor booleano que indica si se requiere la reentrada.

Locked

Obtiene o establece un valor booleano que indica si el Context que implementa esta instancia de SynchronizationAttribute está bloqueado.

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.

(Heredado de ContextAttribute)
TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este 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.

(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.

(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.

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.

(Heredado de ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Agrega la propiedad de contexto Synchronized al IConstructionCallMessage especificado.

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.

GetType()

Obtiene el Type de la instancia actual.

(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.

IsDefaultAttribute()

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.

(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.

(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.

(Heredado de Attribute)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

(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.

(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.

(Heredado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera el número de interfaces de información de tipo que proporciona un objeto (0 ó 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.

(Heredado de Attribute)

Se aplica a