SynchronizationAttribute Classe

Definição

Impõe um domínio de sincronização para o contexto atual e para todos os contextos que partilham 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 seguinte demonstra a utilização do SynchronizationAttribute. Para o código completo do exemplo, veja 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

Observações

Quando este atributo é aplicado a um objeto, apenas um thread pode estar a ser executado em todos os contextos que partilham uma instância desta propriedade. Isto é feito através de sumidouros que intercetam e serializam chamadas recebidas para os respetivos contextos. Se a propriedade estiver marcada para reentrada, então as chamadas também são interceptadas. A interceção de callout permite que outros threads em espera entrem no domínio de sincronização para maximizar o rendimento.

Note

Existem duas classes nomeadas SynchronizationAttribute : uma no System.Runtime.Remoting.Contexts namespace e outra no System.EnterpriseServices namespace. A System.EnterpriseServices.SynchronizationAttribute classe suporta apenas chamadas síncronas e pode ser usada apenas com componentes servidos. Suporta System.Runtime.Remoting.Contexts.SynchronizationAttribute chamadas síncronas e assíncronas, podendo ser usado apenas com objetos ligados ao contexto. (Para mais informações sobre objetos ligados ao contexto, veja a ContextBoundObject classe.)

Note

Esta classe cria uma exigência de ligação e uma exigência de herança ao nível da classe. A SecurityException é lançado quando o chamador imediato ou a classe derivada não têm permissão de infraestrutura. Para detalhes sobre exigências de segurança, consulte Exigências de Ligação e Exigências de Herança.

Construtores

Name Description
SynchronizationAttribute()

Inicializa uma nova instância da SynchronizationAttribute classe com valores por defeito.

SynchronizationAttribute(Boolean)

Inicializa uma nova instância da SynchronizationAttribute classe com um valor booleano que indica se é necessária a reentrada.

SynchronizationAttribute(Int32, Boolean)

Inicializa uma nova instância da SynchronizationAttribute classe com um flag indicando o comportamento do objeto a que este atributo é aplicado e um valor booleano que indica se é necessária a reentrada.

SynchronizationAttribute(Int32)

Inicializa uma nova instância da SynchronizationAttribute classe com um flag indicando o comportamento do objeto ao qual este atributo é aplicado.

Campos

Name Description
AttributeName

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

Indica o nome do atributo contexto.

(Herdado de ContextAttribute)
NOT_SUPPORTED

Indica que a classe a que este atributo é aplicado não pode ser criada num contexto que tenha sincronização. Este campo é constante.

REQUIRED

Indica que a classe a que este atributo é aplicado deve ser criada num contexto que tenha sincronização. Este campo é constante.

REQUIRES_NEW

Indica que a classe a que este atributo é aplicado deve ser criada num contexto com uma nova instância da propriedade de sincronização cada vez. Este campo é constante.

SUPPORTED

Indica que a classe a que este atributo é aplicado não depende de o contexto ter ou não sincronização. Este campo é constante.

Propriedades

Name Description
IsReEntrant

Recebe ou define um valor booleano que indica se é necessária a reentrada.

Locked

Obtém ou define um valor booleano indicando se a Context implementação desta instância de SynchronizationAttribute está bloqueada.

Name

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

Recebe o nome do atributo contexto.

(Herdado de ContextAttribute)
TypeId

Quando implementado numa classe derivada, obtém um identificador único para esta Attribute.

(Herdado de Attribute)

Métodos

Name Description
Equals(Object)

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

Devolve um valor booleano indicando se esta instância é igual ao objeto especificado.

(Herdado de ContextAttribute)
Freeze(Context)

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

Chamada quando o contexto está congelado.

(Herdado de ContextAttribute)
GetClientContextSink(IMessageSink)

Cria um sumidouro CallOut e encadeia-o à frente da cadeia fornecida de sumidouros na fronteira de contexto do lado cliente de uma chamada remota.

GetHashCode()

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

Devolve o código de hash para esta instância de ContextAttribute.

(Herdado de ContextAttribute)
GetPropertiesForNewContext(IConstructionCallMessage)

Adiciona a Synchronized propriedade de contexto ao especificado IConstructionCallMessage.

GetServerContextSink(IMessageSink)

Cria um sumidouro de despacho sincronizado e encadeia-o à frente da cadeia fornecida de sumidouros na fronteira de contexto do lado do servidor de uma chamada remota.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsContextOK(Context, IConstructionCallMessage)

Devolve um valor booleano que indica se o parâmetro de contexto cumpre os requisitos do atributo de contexto.

IsDefaultAttribute()

Quando sobrescrito numa classe derivada, indica se o valor desta instância é o valor padrão para a classe derivada.

(Herdado de Attribute)
IsNewContextOK(Context)

Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código.

Devolve um valor booleano indicando se a propriedade de contexto é compatível com o novo contexto.

(Herdado de ContextAttribute)
Match(Object)

Quando sobrescrito numa classe derivada, devolve um valor que indica se esta instância é igual a um objeto especificado.

(Herdado de Attribute)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

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

Mapeia um conjunto de nomes para um conjunto correspondente de identificadores de despacho.

(Herdado de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Recupera a informação de tipo de um objeto, que pode ser usada para obter a informação de tipo para uma interface.

(Herdado de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Recupera o número de interfaces de informações de tipo que um objeto fornece (0 ou 1).

(Herdado de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Proporciona acesso a propriedades e métodos expostos por um objeto.

(Herdado de Attribute)

Aplica-se a