Sdílet prostřednictvím


SynchronizationAttribute Třída

Definice

Vynucuje synchronizační doménu pro aktuální kontext a všechny kontexty, které sdílejí stejnou instanci.

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
Dědičnost
SynchronizationAttribute
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje použití SynchronizationAttribute. Úplný ukázkový kód najdete v příkladu AsyncResult pro třídu.

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

Poznámky

Při použití tohoto atributu na objekt, pouze jedno vlákno může být spuštěno ve všech kontextech, které sdílejí instanci této vlastnosti. To se provádí přispíváním jímek, které zachycují a serializují příchozí volání pro příslušné kontexty. Pokud je vlastnost označená pro opakované volání, zachytí se také popisky. Zachytávání bublinových popisků umožňuje, aby ostatní čekající vlákna vstoupila do synchronizační domény za účelem dosažení maximální propustnosti.

Poznámka

Existují dvě třídy s názvem SynchronizationAttribute : jedna v System.Runtime.Remoting.Contexts oboru názvů a druhá v System.EnterpriseServices oboru názvů. Třída System.EnterpriseServices.SynchronizationAttribute podporuje pouze synchronní volání a lze ji použít pouze s komponentami obsluhy. Podporuje System.Runtime.Remoting.Contexts.SynchronizationAttribute synchronní i asynchronní volání a lze ho použít pouze s objekty vázanými na kontext. (Další informace o objektech vázaných na kontext najdete ve ContextBoundObject třídě.)

Poznámka

Tato třída vytváří požadavek odkazu a požadavek dědičnosti na úrovni třídy. Vyvolá SecurityException se, když přímý volající nebo odvozená třída nemá oprávnění k infrastruktuře. Podrobnosti o požadavcích na zabezpečení najdete v tématu Požadavky propojení a Požadavky na dědičnost.

Konstruktory

SynchronizationAttribute()

Inicializuje novou instanci třídy SynchronizationAttribute s výchozími hodnotami.

SynchronizationAttribute(Boolean)

Inicializuje novou instanci SynchronizationAttribute třídy s logickou hodnotou označující, zda je požadována opětovná registrace.

SynchronizationAttribute(Int32)

Inicializuje novou instanci SynchronizationAttribute třídy s příznakem označujícím chování objektu, na který je tento atribut použit.

SynchronizationAttribute(Int32, Boolean)

Inicializuje novou instanci SynchronizationAttribute třídy s příznakem označujícím chování objektu, na který je tento atribut použit, a logickou hodnotu označující, zda je požadována opětovná registrace.

Pole

AttributeName

Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu.

Označuje název atributu kontextu.

(Zděděno od ContextAttribute)
NOT_SUPPORTED

Označuje, že třídu, na kterou je tento atribut použit, nelze vytvořit v kontextu, který má synchronizaci. Toto pole je konstantní.

REQUIRED

Označuje, že třída, na kterou je tento atribut použit, musí být vytvořena v kontextu, který má synchronizaci. Toto pole je konstantní.

REQUIRES_NEW

Označuje, že třída, na kterou je tento atribut použit, musí být vytvořena v kontextu s novou instancí synchronizační vlastnosti pokaždé. Toto pole je konstantní.

SUPPORTED

Označuje, že třída, na kterou je tento atribut použit, není závislá na tom, zda kontext má synchronizaci. Toto pole je konstantní.

Vlastnosti

IsReEntrant

Získá nebo nastaví logickou hodnotu označující, zda je vyžadována opětovná operace.

Locked

Získá nebo nastaví logickou hodnotu označující, zda Context je implementace této instance SynchronizationAttribute uzamčena.

Name

Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu.

Získá název atributu kontextu.

(Zděděno od ContextAttribute)
TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tuto Attributetřídu .

(Zděděno od Attribute)

Metody

Equals(Object)

Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu.

Vrátí logickou hodnotu označující, zda se tato instance rovná zadanému objektu.

(Zděděno od ContextAttribute)
Freeze(Context)

Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu.

Volá se, když je kontext zablokovaný.

(Zděděno od ContextAttribute)
GetClientContextSink(IMessageSink)

Vytvoří jímku CallOut a zřetězuje ji před zadaným řetězem jímek na hranici kontextu na konci vzdálené komunikace klienta.

GetHashCode()

Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu.

Vrátí hashcode pro tuto instanci .ContextAttribute

(Zděděno od ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Synchronized Přidá vlastnost context do zadaného IConstructionCallMessageobjektu .

GetServerContextSink(IMessageSink)

Vytvoří synchronizovanou jímku pro odesílání a zřetězuje ji před zadaným řetězem jímek na hranici kontextu na konci vzdálené komunikace serveru.

GetType()

Získá aktuální Type instanci.

(Zděděno od Object)
IsContextOK(Context, IConstructionCallMessage)

Vrátí logickou hodnotu označující, zda parametr kontextu splňuje požadavky atributu kontextu.

IsDefaultAttribute()

Při přepsání v odvozené třídě označuje, zda je hodnota této instance výchozí hodnotou pro odvozenou třídu.

(Zděděno od Attribute)
IsNewContextOK(Context)

Toto rozhraní API podporuje produktovou infrastrukturu a není určené k použití přímo z uživatelského kódu.

Vrátí logickou hodnotu označující, zda je vlastnost kontextu kompatibilní s novým kontextem.

(Zděděno od ContextAttribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Objectsouboru .

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

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

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, které lze použít k získání informací o typu pro rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)

Platí pro