Freigeben über


ILogicalThreadAffinative-Schnittstelle

Markiert ein Objekt, das Objekte außerhalb einer AppDomain in einem LogicalCallContext verbreiten kann.

Namespace: System.Runtime.Remoting.Messaging
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<ComVisibleAttribute(True)> _
Public Interface ILogicalThreadAffinative
'Usage
Dim instance As ILogicalThreadAffinative
[ComVisibleAttribute(true)] 
public interface ILogicalThreadAffinative
[ComVisibleAttribute(true)] 
public interface class ILogicalThreadAffinative
/** @attribute ComVisibleAttribute(true) */ 
public interface ILogicalThreadAffinative
ComVisibleAttribute(true) 
public interface ILogicalThreadAffinative

Hinweise

Bei einem Remotemethodenaufruf eines Objekts in einer anderen AppDomain generiert die aktuelle CallContext-Klasse einen LogicalCallContext, der zusammen mit dem Aufruf zum Remotespeicherort übermittelt wird. Außerhalb der AppDomain werden nur Objekte verbreitet, die die ILogicalThreadAffinative-Schnittstelle verfügbar machen und im CallContext gespeichert sind. Objekte, die diese Schnittstelle nicht unterstützen, werden in LogicalCallContext-Instanzen mit Remotemethodenaufrufen nicht übertragen.

Beispiel

Im folgenden Codebeispiel wird veranschaulicht, wie mithilfe der ILogicalThreadAffinative-Schnittstelle Principal- und Identitätsobjekte für die Identifikation an einen Remotespeicherort übertragen werden. Den in diesem Beispiel für die HelloServiceClass-Klasse verwendeten Code finden Sie im Beispiel für die GetData-Methode. Den in diesem Beispiel für die Serverklasse verwendeten Code finden Sie im Beispiel für die RegisterActivatedServiceType-Klasse. Den in diesem Beispiel für die Clientklasse verwendeten Code finden Sie im Beispiel für die CallContext-Klasse.

<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 'New

End Class 'LogicalCallContextData
[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 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;
   }

};

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

ILogicalThreadAffinative-Member
System.Runtime.Remoting.Messaging-Namespace