Condividi tramite


SynchronizationAttribute Classe

Definizione

Applica un dominio di sincronizzazione per il contesto corrente e 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.

Annotazioni

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

Annotazioni

Questa classe effettua 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.

Costruttori

Nome Descrizione
SynchronizationAttribute()

Inizializza una nuova istanza della SynchronizationAttribute classe con valori predefiniti.

SynchronizationAttribute(Boolean)

Inizializza una nuova istanza della SynchronizationAttribute classe con un valore booleano che indica se è necessaria la ripetizione.

SynchronizationAttribute(Int32, Boolean)

Inizializza una nuova istanza della SynchronizationAttribute classe con un flag che indica il comportamento dell'oggetto a cui viene applicato l'attributo e un valore booleano che indica se è necessaria la riesecuzione.

SynchronizationAttribute(Int32)

Inizializza una nuova istanza della SynchronizationAttribute classe con un flag che indica il comportamento dell'oggetto a cui viene applicato questo attributo.

Campi

Nome Descrizione
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 a cui viene applicato questo attributo non può essere creata in un contesto con sincronizzazione. Questo campo è costante.

REQUIRED

Indica che la classe a cui viene applicato questo attributo deve essere creata in un contesto con sincronizzazione. Questo campo è costante.

REQUIRES_NEW

Indica che la classe a cui viene applicato questo attributo deve essere creata in un contesto con una nuova istanza della proprietà di sincronizzazione ogni volta. Questo campo è costante.

SUPPORTED

Indica che la classe a cui viene applicato questo attributo non dipende dal fatto che il contesto abbia la sincronizzazione. Questo campo è costante.

Proprietà

Nome Descrizione
IsReEntrant

Ottiene o imposta un valore booleano che indica se è necessaria la riesecuzione.

Locked

Ottiene o imposta un valore booleano che indica se l'implementazione Context di questa istanza di SynchronizationAttribute è bloccata.

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

Se implementato in una classe derivata, ottiene un identificatore univoco per questo Attribute.

(Ereditato da Attribute)

Metodi

Nome Descrizione
Equals(Object)

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

Restituisce un valore booleano che indica se l'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 il contesto è bloccato.

(Ereditato da ContextAttribute)
GetClientContextSink(IMessageSink)

Crea un sink CallOut e lo concatena davanti alla catena di sink fornita al limite del contesto sul lato 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 Synchronized proprietà di contesto all'oggetto specificato IConstructionCallMessage.

GetServerContextSink(IMessageSink)

Crea un sink dispatch sincronizzato e lo concatena davanti alla catena di sink fornita al limite del contesto alla fine del server di una chiamata remota.

GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IsContextOK(Context, IConstructionCallMessage)

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

IsDefaultAttribute()

Quando sottoposto a 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 booleano che indica 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 è uguale a un oggetto specificato.

(Ereditato da Attribute)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
_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 per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per 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 alle proprietà e ai metodi esposti da un oggetto .

(Ereditato da Attribute)

Si applica a