SynchronizationAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Wymusza domenę synchronizacji dla bieżącego kontekstu i wszystkich kontekstów, które współużytkują to samo wystąpienie.
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
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
W poniższym przykładzie kodu pokazano użycie obiektu SynchronizationAttribute. Pełny przykładowy kod można znaleźć w przykładzie AsyncResult dla klasy .
// 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
Uwagi
Po zastosowaniu tego atrybutu do obiektu można wykonać tylko jeden wątek we wszystkich kontekstach, które współużytkuje wystąpienie tej właściwości. Odbywa się to przez współtworzenia ujścia, które przechwytują i serializują przychodzące wywołania dla odpowiednich kontekstów. Jeśli właściwość jest oznaczona do ponownego wyjęcia, wywołania również są przechwytywane. Przechwytywanie objaśnień umożliwia innym wątkom oczekującym wejście do domeny synchronizacji w celu uzyskania maksymalnej przepływności.
Uwaga / Notatka
Istnieją dwie klasy o nazwie SynchronizationAttribute : jedna w System.Runtime.Remoting.Contexts przestrzeni nazw, a druga w System.EnterpriseServices przestrzeni nazw. Klasa System.EnterpriseServices.SynchronizationAttribute obsługuje tylko wywołania synchroniczne i może być używana tylko ze składnikami usługi. Obiekt System.Runtime.Remoting.Contexts.SynchronizationAttribute obsługuje zarówno wywołania synchroniczne, jak i asynchroniczne, i może być używany tylko z obiektami powiązanymi kontekstu. (Aby uzyskać więcej informacji na temat obiektów powiązanych z kontekstem, zobacz klasę ContextBoundObject ).
Uwaga / Notatka
Ta klasa sprawia, że zapotrzebowanie na łącza i zapotrzebowanie na dziedziczenie na poziomie klasy. Element SecurityException jest zgłaszany, gdy bezpośredni obiekt wywołujący lub klasa pochodna nie ma uprawnień do infrastruktury.
Konstruktory
| Nazwa | Opis |
|---|---|
| SynchronizationAttribute() |
Inicjuje SynchronizationAttribute nowe wystąpienie klasy z wartościami domyślnymi. |
| SynchronizationAttribute(Boolean) |
Inicjuje nowe wystąpienie SynchronizationAttribute klasy z wartością logiczną wskazującą, czy wymagana jest ponowna zmiana. |
| SynchronizationAttribute(Int32, Boolean) |
Inicjuje nowe wystąpienie SynchronizationAttribute klasy z flagą wskazującą zachowanie obiektu, do którego zastosowano ten atrybut, oraz wartość logiczną wskazującą, czy wymagana jest ponowna zmiana. |
| SynchronizationAttribute(Int32) |
Inicjuje nowe wystąpienie SynchronizationAttribute klasy z flagą wskazującą zachowanie obiektu, do którego jest stosowany ten atrybut. |
Pola
| Nazwa | Opis |
|---|---|
| AttributeName |
Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Wskazuje nazwę atrybutu kontekstu. (Odziedziczone po ContextAttribute) |
| NOT_SUPPORTED |
Wskazuje, że nie można utworzyć klasy, do której zastosowano ten atrybut, w kontekście, który ma synchronizację. To pole jest stałe. |
| REQUIRED |
Wskazuje, że klasa, do której zastosowano ten atrybut, musi zostać utworzona w kontekście z synchronizacją. To pole jest stałe. |
| REQUIRES_NEW |
Wskazuje, że klasa, do której zastosowano ten atrybut, musi zostać utworzona w kontekście z nowym wystąpieniem właściwości synchronizacji za każdym razem. To pole jest stałe. |
| SUPPORTED |
Wskazuje, że klasa, do której zastosowano ten atrybut, nie zależy od tego, czy kontekst ma synchronizację. To pole jest stałe. |
Właściwości
| Nazwa | Opis |
|---|---|
| IsReEntrant |
Pobiera lub ustawia wartość logiczną wskazującą, czy wymagana jest ponowna zmiana. |
| Locked |
Pobiera lub ustawia wartość logiczną wskazującą Context , czy implementowanie tego wystąpienia SynchronizationAttribute jest zablokowane. |
| Name |
Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Pobiera nazwę atrybutu kontekstu. (Odziedziczone po ContextAttribute) |
| TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attribute. (Odziedziczone po Attribute) |
Metody
| Nazwa | Opis |
|---|---|
| Equals(Object) |
Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Zwraca wartość logiczną wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po ContextAttribute) |
| Freeze(Context) |
Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Wywoływana, gdy kontekst jest zamrożony. (Odziedziczone po ContextAttribute) |
| GetClientContextSink(IMessageSink) |
Tworzy ujście objaśnienia i tworzy łańcuch przed podanym łańcuchem ujścia w granicach kontekstu na końcu wywołania komunikacji telefonicznej klienta. |
| GetHashCode() |
Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Zwraca kod skrótu dla tego wystąpienia klasy ContextAttribute. (Odziedziczone po ContextAttribute) |
| GetPropertiesForNewContext(IConstructionCallMessage) |
|
| GetServerContextSink(IMessageSink) |
Tworzy zsynchronizowany ujście wysyłki i tworzy łańcuch przed podanym łańcuchem ujścia w granicach kontekstu na końcu serwera wywołania komunikacji telefonicznej. |
| GetType() |
Pobiera Type bieżącego wystąpienia. (Odziedziczone po Object) |
| IsContextOK(Context, IConstructionCallMessage) |
Zwraca wartość logiczną wskazującą, czy parametr kontekstu spełnia wymagania atrybutu kontekstu. |
| IsDefaultAttribute() |
Po zastąpieniu w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej. (Odziedziczone po Attribute) |
| IsNewContextOK(Context) |
Ten interfejs API obsługuje infrastrukturę produktu i nie jest przeznaczony do użycia bezpośrednio z poziomu kodu. Zwraca wartość logiczną wskazującą, czy właściwość kontekstu jest zgodna z nowym kontekstem. (Odziedziczone po ContextAttribute) |
| Match(Object) |
Po zastąpieniu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
| MemberwiseClone() |
Tworzy płytkią kopię bieżącego Object. (Odziedziczone po Object) |
| ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
| Nazwa | Opis |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie obiektu, którego można użyć do uzyskania informacji o typie dla interfejsu. (Odziedziczone po Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Zapewnia dostęp do właściwości i metod uwidocznionych przez obiekt. (Odziedziczone po Attribute) |