SynchronizationAttribute Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Impõe um domínio de sincronização para o contexto atual e todos os contextos que compartilham a mesma instância.
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
- Herança
- Atributos
- Implementações
Exemplos
O exemplo de código a seguir demonstra o uso do SynchronizationAttribute. Para obter o código de exemplo completo, consulte o exemplo da 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
Comentários
Quando esse atributo é aplicado a um objeto , apenas um thread pode ser executado em todos os contextos que compartilham uma instância dessa propriedade. Isso é feito contribuindo com coletores que interceptam e serializam chamadas de entrada para os respectivos contextos. Se a propriedade estiver marcada para reentrada, os textos explicativos também serão interceptados. A interceptação de texto explicativo permite que outros threads de espera insiram o domínio de sincronização para a taxa de transferência máxima.
Observação
Há duas classes chamadas SynchronizationAttribute
: uma no System.Runtime.Remoting.Contexts namespace e outra no System.EnterpriseServices namespace. A System.EnterpriseServices.SynchronizationAttribute classe dá suporte apenas a chamadas síncronas e só pode ser usada com componentes atendidos. O System.Runtime.Remoting.Contexts.SynchronizationAttribute dá suporte a chamadas síncronas e assíncronas e pode ser usado somente com objetos associados ao contexto. (Para obter mais informações sobre objetos associados ao contexto, consulte a ContextBoundObject classe .)
Observação
Essa classe faz uma demanda de link e uma demanda de herança no nível da classe. Um SecurityException é gerado quando o chamador imediato ou a classe derivada não tem permissão de infraestrutura. Para obter detalhes sobre demandas de segurança, consulte Vincular demandas e demandas de herança.
Construtores
SynchronizationAttribute() |
Inicializa uma nova instância da classe SynchronizationAttribute com valores padrão. |
SynchronizationAttribute(Boolean) |
Inicializa uma nova instância da classe SynchronizationAttribute com um valor booliano que indica se a reentrada é necessária. |
SynchronizationAttribute(Int32) |
Inicializa uma nova instância da classe SynchronizationAttribute com um sinalizador que indica o comportamento do objeto ao qual esse atributo é aplicado. |
SynchronizationAttribute(Int32, Boolean) |
Inicializa uma nova instância da classe SynchronizationAttribute com um sinalizador que indica o comportamento do objeto ao qual esse atributo é aplicado e um valor booliano que indica se a reentrada é necessária. |
Campos
AttributeName |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Indica o nome do atributo de contexto. (Herdado de ContextAttribute) |
NOT_SUPPORTED |
Indica que a classe à qual esse atributo é aplicado não pode ser criada em um contexto que tenha sincronização. Este campo é constante. |
REQUIRED |
Indica que a classe à qual esse atributo é aplicado deve ser criada em um contexto que tenha sincronização. Este campo é constante. |
REQUIRES_NEW |
Indica que a classe à qual esse atributo é aplicado deve ser criada em um contexto com uma nova instância da propriedade de sincronização de cada vez. Este campo é constante. |
SUPPORTED |
Indica que a classe à qual esse atributo é aplicado não depende da presença da sincronização no contexto. Este campo é constante. |
Propriedades
IsReEntrant |
Obtém ou define um valor booliano que indica se a reentrada é necessária. |
Locked |
Obtém ou define um valor booliano que indica se o Context implementar esta instância do SynchronizationAttribute está bloqueado. |
Name |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Obtém o nome do atributo de contexto. (Herdado de ContextAttribute) |
TypeId |
Quando implementado em uma classe derivada, obtém um identificador exclusivo para este Attribute. (Herdado de Attribute) |
Métodos
Equals(Object) |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Retorna um valor booliano que indica se essa instância é igual ao objeto especificado. (Herdado de ContextAttribute) |
Freeze(Context) |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Chamado quando o contexto está congelado. (Herdado de ContextAttribute) |
GetClientContextSink(IMessageSink) |
Cria um coletor CallOut e encadeia-o na frente da cadeia de coletores fornecida no limite do contexto na extremidade do cliente de uma chamada de comunicação remota. |
GetHashCode() |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Retorna o código hash dessa instância de ContextAttribute. (Herdado de ContextAttribute) |
GetPropertiesForNewContext(IConstructionCallMessage) |
Adiciona a propriedade de contexto |
GetServerContextSink(IMessageSink) |
Cria um coletor de expedição sincronizado e encadeia-o na frente da cadeia de coletores fornecida no limite de contexto na extremidade do servidor de uma chamada de comunicação remota. |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
IsContextOK(Context, IConstructionCallMessage) |
Retorna um valor booliano que indica se o parâmetro de contexto atende aos requisitos do atributo de contexto. |
IsDefaultAttribute() |
Quando substituído em uma classe derivada, indica se o valor dessa instância é o valor padrão para a classe derivada. (Herdado de Attribute) |
IsNewContextOK(Context) |
Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código. Retorna um valor booliano que indica se a propriedade de contexto é compatível com o novo contexto. (Herdado de ContextAttribute) |
Match(Object) |
Quando substituído em uma classe derivada, retorna um valor que indica se essa instância é igual a um objeto especificado. (Herdado de Attribute) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de expedição. (Herdado de Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Recupera as informações de tipo para um objeto, que pode ser usado para obter as informações de tipo para uma interface. (Herdado de Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Retorna o número de interfaces de informações do tipo que um objeto fornece (0 ou 1). (Herdado de Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornece acesso a propriedades e métodos expostos por um objeto. (Herdado de Attribute) |