SynchronizationAttribute Klasse

Definition

Erzwingt eine Synchronisierungsdomäne für den aktuellen Kontext und alle Kontexte, die dieselbe Instanz gemeinsam nutzen.

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
Vererbung
SynchronizationAttribute
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird die Verwendung von SynchronizationAttributeveranschaulicht. Den vollständigen Beispielcode finden Sie im Beispiel für die AsyncResult -Klasse.

// 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

Hinweise

Wenn dieses Attribut auf ein Objekt angewendet wird, kann nur ein Thread in allen Kontexten ausgeführt werden, die eine Instanz dieser Eigenschaft gemeinsam haben. Dies geschieht durch das Mitwirken von Senken, die eingehende Aufrufe für die jeweiligen Kontexte abfangen und serialisieren. Wenn die Eigenschaft für den erneuten Versuch markiert ist, werden auch Legenden abgefangen. Das Abfangen von Legenden ermöglicht es anderen wartenden Threads, für maximalen Durchsatz in die Synchronisierungsdomäne zu gelangen.

Hinweis

Es gibt zwei Klassen mit dem Namen SynchronizationAttribute : eine im System.Runtime.Remoting.Contexts Namespace und die andere im System.EnterpriseServices Namespace. Die System.EnterpriseServices.SynchronizationAttribute -Klasse unterstützt nur synchrone Aufrufe und kann nur mit gewarteten Komponenten verwendet werden. Der System.Runtime.Remoting.Contexts.SynchronizationAttribute unterstützt sowohl synchrone als auch asynchrone Aufrufe und kann nur mit kontextgebundenen Objekten verwendet werden. (Weitere Informationen zu kontextgebundenen Objekten finden Sie in der ContextBoundObject -Klasse.)

Hinweis

Diese Klasse stellt eine Linkanforderung und eine Vererbungsanforderung auf Klassenebene aus. Ein SecurityException wird ausgelöst, wenn entweder der unmittelbare Aufrufer oder die abgeleitete Klasse keine Infrastrukturberechtigung besitzt. Ausführliche Informationen zu Sicherheitsanforderungen finden Sie unter Verknüpfen von Anforderungen und Erbansprüchen.

Konstruktoren

SynchronizationAttribute()

Initialisiert eine neue Instanz der SynchronizationAttribute-Klasse mit Standardwerten.

SynchronizationAttribute(Boolean)

Initialisiert eine neue Instanz der SynchronizationAttribute-Klasse mit einem booleschen Wert, der angibt, ob Reentranz erforderlich ist.

SynchronizationAttribute(Int32)

Initialisiert eine neue Instanz der SynchronizationAttribute-Klasse mit einem Flag zur Angabe des Verhaltens für das Objekt, auf das das Attribut angewendet wird.

SynchronizationAttribute(Int32, Boolean)

Initialisiert eine neue Instanz der SynchronizationAttribute-Klasse mit einem Flag zur Angabe des Verhaltens für das Objekt, auf das das Attribut angewendet wird, und einem booleschen Wert, der angibt, ob Reentranz erforderlich ist.

Felder

AttributeName

Diese API unterstützt die Produktinfrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code gedacht.

Gibt den Namen des Kontextattributs an.

(Geerbt von ContextAttribute)
NOT_SUPPORTED

Gibt an, dass die Klasse, auf die dieses Attribut angewendet wird, nicht in einem Kontext mit Synchronisierung erstellt werden kann. Dieses Feld ist konstant.

REQUIRED

Gibt an, dass die Klasse, auf die dieses Attribut angewendet wird, in einem Kontext mit Synchronisierung erstellt werden muss. Dieses Feld ist konstant.

REQUIRES_NEW

Gibt an, dass die Klasse, auf die dieses Attribut angewendet wird, in einem Kontext mit jeweils einer neuen Instanz der Synchronisierungseigenschaft erstellt werden muss. Dieses Feld ist konstant.

SUPPORTED

Gibt an, dass die Klasse, auf die dieses Attribut angewendet wird, nicht vom Vorhandensein einer Synchronisierung für den Kontext abhängig ist. Dieses Feld ist konstant.

Eigenschaften

IsReEntrant

Ruft einen booleschen Wert ab, der angibt, ob Reentranz erforderlich ist, oder legt diesen fest.

Locked

Ruft einen booleschen Wert ab, der angibt, ob der Context gesperrt ist, der diese Instanz von SynchronizationAttribute implementiert, oder legt diesen fest.

Name

Diese API unterstützt die Produktinfrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code gedacht.

Ruft den Namen des Kontextattributs ab.

(Geerbt von ContextAttribute)
TypeId

Ruft bei Implementierung in einer abgeleiteten Klasse einen eindeutigen Bezeichner für dieses Attribute ab.

(Geerbt von Attribute)

Methoden

Equals(Object)

Diese API unterstützt die Produktinfrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code gedacht.

Gibt einen booleschen Wert zurück, der angibt, ob diese Instanz gleich dem angegebenen Objekt ist.

(Geerbt von ContextAttribute)
Freeze(Context)

Diese API unterstützt die Produktinfrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code gedacht.

Wird aufgerufen, wenn der Kontext eingefroren ist.

(Geerbt von ContextAttribute)
GetClientContextSink(IMessageSink)

Erstellt eine CallOut-Senke und stellt diese an den Anfang der vorhandenen Senkenkette, sodass sie sich an der Kontextgrenze eines Remoteaufrufs von der Clientseite befindet.

GetHashCode()

Diese API unterstützt die Produktinfrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code gedacht.

Gibt den Hashcode dieser Instanz von ContextAttribute zurück.

(Geerbt von ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Fügt der angegebenen IConstructionCallMessage die Synchronized-Kontexteigenschaft hinzu.

GetServerContextSink(IMessageSink)

Erstellt eine synchroniserten Dispatchsenke und stellt diese an den Anfang der vorhandenen Senkenkette, sodass sie sich an der Kontextgrenze eines Remoteaufrufs von der Serverseite befindet.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsContextOK(Context, IConstructionCallMessage)

Gibt einen booleschen Wert zurück, der angibt, ob der Kontextparameter den Anforderungen des Kontextattributs entspricht.

IsDefaultAttribute()

Gibt beim Überschreiben in einer abgeleiteten Klasse an, ob der Wert der Instanz der Standardwert für die abgeleitete Klasse ist.

(Geerbt von Attribute)
IsNewContextOK(Context)

Diese API unterstützt die Produktinfrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code gedacht.

Gibt einen booleschen Wert zurück, der angibt, ob die Kontexteigenschaft mit dem neuen Kontext kompatibel ist.

(Geerbt von ContextAttribute)
Match(Object)

Beim Überschreiben in einer abgeleiteten Klasse wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem bestimmten Objekt entspricht.

(Geerbt von Attribute)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

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

Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu.

(Geerbt von Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Ruft die Typinformationen für ein Objekt ab, mit deren Hilfe die Typinformationen für eine Schnittstelle abgerufen werden können.

(Geerbt von Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1).

(Geerbt von Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Stellt den Zugriff auf von einem Objekt verfügbar gemachte Eigenschaften und Methoden bereit.

(Geerbt von Attribute)

Gilt für: