SynchronizationAttribute Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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
- 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 |
| 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) |