ILogicalThreadAffinative Interface
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Marque un objet pouvant se propager à l'extérieur de AppDomain dans LogicalCallContext.
public interface class ILogicalThreadAffinative
public interface ILogicalThreadAffinative
[System.Runtime.InteropServices.ComVisible(true)]
public interface ILogicalThreadAffinative
type ILogicalThreadAffinative = interface
[<System.Runtime.InteropServices.ComVisible(true)>]
type ILogicalThreadAffinative = interface
Public Interface ILogicalThreadAffinative
- Attributs
Exemples
L’exemple de code suivant illustre l’utilisation de l’interface ILogicalThreadAffinative pour transmettre des objets principal et d’identité à un emplacement distant à des fins d’identification. Pour afficher le code de la HelloServiceClass
classe utilisée dans l’exemple, consultez l’exemple de la GetData méthode . Pour afficher le code de la classe de serveur utilisée dans cet exemple, consultez l’exemple pour la RegisterActivatedServiceType classe . Pour afficher le code de la classe cliente utilisée dans l’exemple, consultez l’exemple de la CallContext classe .
[Serializable]
public ref class LogicalCallContextData: public ILogicalThreadAffinative
{
private:
int _nAccesses;
IPrincipal^ _principal;
public:
property String^ numOfAccesses
{
String^ get()
{
return String::Format( "The identity of {0} has been accessed {1} times.", _principal->Identity->Name, _nAccesses );
}
}
property IPrincipal^ Principal
{
IPrincipal^ get()
{
_nAccesses++;
return _principal;
}
}
LogicalCallContextData( IPrincipal^ p )
{
_nAccesses = 0;
_principal = p;
}
};
[Serializable]
public class LogicalCallContextData : ILogicalThreadAffinative
{
int _nAccesses;
IPrincipal _principal;
public string numOfAccesses {
get {
return String.Format("The identity of {0} has been accessed {1} times.",
_principal.Identity.Name,
_nAccesses);
}
}
public IPrincipal Principal {
get {
_nAccesses ++;
return _principal;
}
}
public LogicalCallContextData(IPrincipal p) {
_nAccesses = 0;
_principal = p;
}
}
<Serializable()> Public Class LogicalCallContextData
Implements ILogicalThreadAffinative
Private _nAccesses As Integer
Private _principal As IPrincipal
Public ReadOnly Property numOfAccesses() As String
Get
Return [String].Format("The identity of {0} has been accessed {1} times.", _principal.Identity.Name, _nAccesses)
End Get
End Property
Public ReadOnly Property Principal() As IPrincipal
Get
_nAccesses += 1
Return _principal
End Get
End Property
Public Sub New(p As IPrincipal)
_nAccesses = 0
_principal = p
End Sub
End Class
Remarques
Lorsqu’un appel de méthode distante est effectué à un objet dans un autre AppDomain, la classe actuelle CallContext génère un LogicalCallContext qui se déplace avec l’appel à l’emplacement distant. Seuls les objets qui exposent l’interface ILogicalThreadAffinative et sont stockés dans sont CallContext propagés en dehors de .AppDomain Les objets qui ne prennent pas en charge cette interface ne sont pas transmis dans LogicalCallContext les instances avec des appels de méthode distante.