SynchronizationAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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 |
| 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) |