Condividi tramite


SynchronizationAttribute Classe

Definizione

Attiva un dominio di sincronizzazione per il contesto corrente e per tutti i contesti che condividono la stessa istanza.

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
Ereditarietà
SynchronizationAttribute
Attributi
Implementazioni

Esempio

Nell'esempio di codice seguente viene illustrato l'uso di SynchronizationAttribute. Per il codice di esempio completo, vedere l'esempio per la AsyncResult classe .

// 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à. Questa operazione viene eseguita contribuendo ai sink che intercettano e serializzano le chiamate in ingresso per i rispettivi contesti. Se la proprietà è contrassegnata per la ripetizione, anche i callout vengono intercettati. L'intercettazione del callout consente ad altri thread in attesa di immettere il dominio di sincronizzazione per ottenere una velocità effettiva massima.

Nota

Esistono due classi denominate SynchronizationAttribute : una nello System.Runtime.Remoting.Contexts spazio dei nomi e l'altra nello System.EnterpriseServices spazio dei nomi . La System.EnterpriseServices.SynchronizationAttribute classe supporta solo chiamate sincrone e può essere usata solo con i componenti serviti. System.Runtime.Remoting.Contexts.SynchronizationAttribute supporta sia chiamate sincrone che asincrone e possono essere usate solo con oggetti associati al contesto. Per altre informazioni sugli oggetti associati al contesto, vedere la ContextBoundObject classe .

Nota

Questa classe rende una richiesta di collegamento e una richiesta di ereditarietà a livello di classe. Viene SecurityException generata un'eccezione quando il chiamante immediato o la classe derivata non dispone dell'autorizzazione dell'infrastruttura. Per informazioni dettagliate sulle richieste di sicurezza, vedere Richieste di collegamento e richieste di ereditarietà.

Costruttori

SynchronizationAttribute()

Inizializza una nuova istanza della classe SynchronizationAttribute con i valori predefiniti.

SynchronizationAttribute(Boolean)

Inizializza una nuova istanza della classe SynchronizationAttribute con un valore Boolean che indica se è richiesto il reingresso.

SynchronizationAttribute(Int32)

Inizializza una nuova istanza della classe SynchronizationAttribute con un flag che indica il comportamento dell'oggetto al quale viene applicato l'attributo.

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.

Campi

AttributeName

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Indica il nome dell'attributo di contesto.

(Ereditato da ContextAttribute)
NOT_SUPPORTED

Indica che la classe alla quale viene applicato l'attributo non può essere creata in un contesto con sincronizzazione. Questo campo è costante.

REQUIRED

Indica che la classe alla quale viene applicato l'attributo deve essere creata in un contesto con sincronizzazione. Questo campo è costante.

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. Questo campo è costante.

SUPPORTED

Indica che la classe alla quale viene applicato l'attributo non dipende dalla sincronizzazione del contesto. Questo campo è costante.

Proprietà

IsReEntrant

Ottiene o imposta un valore Boolean che indica se è richiesto il reingresso.

Locked

Ottiene o imposta un valore Boolean che indica se il Context che implementa questa istanza di SynchronizationAttribute è bloccato.

Name

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Ottiene il nome dell'attributo di contesto.

(Ereditato da ContextAttribute)
TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.

(Ereditato da Attribute)

Metodi

Equals(Object)

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Restituisce un valore Boolean che indica se questa istanza è uguale all'oggetto specificato.

(Ereditato da ContextAttribute)
Freeze(Context)

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Chiamato quando viene bloccato il contesto.

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

GetHashCode()

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Restituisce il codice hash per questa istanza di ContextAttribute.

(Ereditato da ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Aggiunge la proprietà di contesto Synchronized al IConstructionCallMessage specificato.

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.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
IsContextOK(Context, IConstructionCallMessage)

Restituisce un valore Boolean che indica se il parametro di contesto soddisfa i requisiti dell'attributo di contesto.

IsDefaultAttribute()

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.

(Ereditato da Attribute)
IsNewContextOK(Context)

Questa API supporta l'infrastruttura del prodotto e non è previsto che venga usata direttamente dal codice.

Restituisce un valore Boolean indicante se la proprietà di contesto è compatibile con il nuovo contesto.

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

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

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

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

(Ereditato da Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 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.

(Ereditato da Attribute)

Si applica a