Compartilhar via


SynchronizationAttribute Classe

Definição

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
SynchronizationAttribute
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 Synchronized à IConstructionCallMessage especificada.

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)

Aplica-se a