SynchronizationAttribute Classe

Definizione

Attiva un dominio di sincronizzazione per il contesto corrente e per tutti i contesti che condividono la stessa istanza.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.Runtime.InteropServices.ComVisible(true)]
[System.Security.SecurityCritical]
[System.Serializable]
public class SynchronizationAttribute : System.Runtime.Remoting.Contexts.ContextAttribute, System.Runtime.Remoting.Contexts.IContributeClientContextSink, System.Runtime.Remoting.Contexts.IContributeServerContextSink
type SynchronizationAttribute = class
    inherit ContextAttribute
    interface IContributeClientContextSink
    interface IContributeServerContextSink
Public Class SynchronizationAttribute
Inherits ContextAttribute
Implements IContributeClientContextSink, IContributeServerContextSink
Ereditarietà
SynchronizationAttribute
Attributi
Implementazioni

Esempi

Nell'esempio di codice riportato di seguito viene illustrato SynchronizationAttributel'utilizzo di.The following code example demonstrates the use of the SynchronizationAttribute. Per il codice di esempio completo, vedere l'esempio relativo AsyncResult alla classe.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 

Commenti

Quando questo attributo viene applicato a un oggetto, è possibile eseguire un solo thread in tutti i contesti che condividono un'istanza di questa proprietà.When this attribute is applied to an object, only one thread can be executing in all contexts that share an instance of this property. Questa operazione viene eseguita contribuendo a sink che intercettano e serializzano le chiamate in ingresso per i rispettivi contesti.This is done by contributing sinks that intercept and serialize incoming calls for the respective contexts. Se la proprietà è contrassegnata per la riimmissione, verranno intercettati anche i callout.If the property is marked for reentry, then callouts are intercepted too. L'intercettazione del callout consente ad altri thread in attesa di accedere al dominio di sincronizzazione per la massima velocità effettiva.The callout interception allows other waiting threads to enter the synchronization domain for maximal throughput.

Nota

Esistono due classi denominate SynchronizationAttribute : una System.Runtime.Remoting.Contexts nello spazio dei nomi System.EnterpriseServices e l'altra nello spazio dei nomi.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 classe supporta solo le chiamate sincrone e può essere utilizzata solo con i componenti serviti.The System.EnterpriseServices.SynchronizationAttribute class supports only synchronous calls, and can be used only with serviced components. Supporta System.Runtime.Remoting.Contexts.SynchronizationAttribute le chiamate sincrone e asincrone e può essere utilizzato solo con gli oggetti associati al contesto.The System.Runtime.Remoting.Contexts.SynchronizationAttribute supports both synchronous and asynchronous calls, and can be used only with context bound objects. Per ulteriori informazioni sugli oggetti associati al contesto, vedere la ContextBoundObject classe.(For more information on context bound objects, see the ContextBoundObject class.)

Nota

Questa classe esegue una richiesta di collegamento e una richiesta di ereditarietà a livello di classe.This class makes a link demand and an inheritance demand at the class level. Viene SecurityException generata un'eccezione quando il chiamante immediato o la classe derivata non dispone dell'autorizzazione di infrastruttura.A SecurityException is thrown when either the immediate caller or the derived class does not have infrastructure permission. Per informazioni dettagliate sulle richieste di sicurezza, vedere richieste di collegamento e richieste di ereditarietà.For details about security demands, see Link Demands and Inheritance Demands.

Costruttori

SynchronizationAttribute()

Inizializza una nuova istanza della classe SynchronizationAttribute con i valori predefiniti.Initializes a new instance of the SynchronizationAttribute class with default values.

SynchronizationAttribute(Boolean)

Inizializza una nuova istanza della classe SynchronizationAttribute con un valore Boolean che indica se è richiesto il reingresso.Initializes a new instance of the SynchronizationAttribute class with a Boolean value indicating whether reentry is required.

SynchronizationAttribute(Int32)

Inizializza una nuova istanza della classe SynchronizationAttribute con un flag che indica il comportamento dell'oggetto al quale viene applicato l'attributo.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)

Inizializza una nuova istanza della classe SynchronizationAttribute con un flag che indica il comportamento dell'oggetto al quale viene applicato l'attributo e un valore Boolean che indica se è richiesto il reingresso.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.

Campi

AttributeName

Indica il nome dell'attributo di contesto.Indicates the name of the context attribute.

(Ereditato da ContextAttribute)
NOT_SUPPORTED

Indica che la classe alla quale viene applicato l'attributo non può essere creata in un contesto con sincronizzazione.Indicates that the class to which this attribute is applied cannot be created in a context that has synchronization. Questo campo è costante.This field is constant.

REQUIRED

Indica che la classe alla quale viene applicato l'attributo deve essere creata in un contesto con sincronizzazione.Indicates that the class to which this attribute is applied must be created in a context that has synchronization. Questo campo è costante.This field is constant.

REQUIRES_NEW

Indica che la classe alla quale viene applicato l'attributo deve essere creata in un contesto con un'istanza sempre nuova della proprietà di sincronizzazione.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. Questo campo è costante.This field is constant.

SUPPORTED

Indica che la classe alla quale viene applicato l'attributo non dipende dalla sincronizzazione del contesto.Indicates that the class to which this attribute is applied is not dependent on whether the context has synchronization. Questo campo è costante.This field is constant.

Proprietà

IsReEntrant

Ottiene o imposta un valore Boolean che indica se è richiesto il reingresso.Gets or sets a Boolean value indicating whether reentry is required.

Locked

Ottiene o imposta un valore Boolean che indica se il Context che implementa questa istanza di SynchronizationAttribute è bloccato.Gets or sets a Boolean value indicating whether the Context implementing this instance of SynchronizationAttribute is locked.

Name

Ottiene il nome dell'attributo di contesto.Gets the name of the context attribute.

(Ereditato da ContextAttribute)
TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Restituisce un valore Boolean che indica se questa istanza è uguale all'oggetto specificato.Returns a Boolean value indicating whether this instance is equal to the specified object.

(Ereditato da ContextAttribute)
Freeze(Context)

Chiamato quando viene bloccato il contesto.Called when the context is frozen.

(Ereditato da ContextAttribute)
GetClientContextSink(IMessageSink)

Crea un sink CallOut e lo concatena davanti alla catena di sink fornita nel limite del contesto sull'estremità client di una chiamata 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()

Restituisce il codice hash per questa istanza di ContextAttribute.Returns the hashcode for this instance of ContextAttribute.

(Ereditato da ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Aggiunge la proprietà di contesto Synchronized al IConstructionCallMessage specificato.Adds the Synchronized context property to the specified IConstructionCallMessage.

GetServerContextSink(IMessageSink)

Crea un sink di invio sincronizzato e lo concatena davanti alla catena di sink fornita nel limite del contesto sull'estremità server di una chiamata 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()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Ereditato da Object)
IsContextOK(Context, IConstructionCallMessage)

Restituisce un valore Boolean che indica se il parametro di contesto soddisfa i requisiti dell'attributo di contesto.Returns a Boolean value indicating whether the context parameter meets the context attribute's requirements.

IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Ereditato da Attribute)
IsNewContextOK(Context)

Restituisce un valore Boolean indicante se la proprietà di contesto è compatibile con il nuovo contesto.Returns a Boolean value indicating whether the context property is compatible with the new context.

(Ereditato da ContextAttribute)
Match(Object)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

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

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.Maps a set of names to a corresponding set of dispatch identifiers.

(Ereditato da Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Ereditato da Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Ereditato da Attribute)

Sicurezza

SecurityPermission
per l'utilizzo del codice dell'infrastruttura.for operating with infrastructure code. Valore richiesta: InheritanceDemand; Valore autorizzazione:InfrastructureDemand value: InheritanceDemand; Permission Value: Infrastructure

Si applica a