SynchronizationAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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) |
|
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) |