ILogicalThreadAffinative Schnittstelle
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Markiert ein Objekt, das außerhalb eines Ins AppDomainLogicalCallContextverteilt werden kann.
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
- Attribute
Beispiele
Im folgenden Codebeispiel wird die Verwendung der ILogicalThreadAffinative Schnittstelle zum Übertragen von Prinzipal- und Identitätsobjekten an einen Remotestandort zur Identifizierung veranschaulicht. Informationen zum Anzeigen des Codes für die HelloServiceClass im Beispiel verwendete Klasse finden Sie im Beispiel für die GetData Methode. Informationen zum Anzeigen des Codes für die in diesem Beispiel verwendete Serverklasse finden Sie unter Beispiel für die RegisterActivatedServiceType Klasse. Informationen zum Anzeigen des Codes für die im Beispiel verwendete Clientklasse finden Sie im Beispiel für die CallContext Klasse.
[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
Hinweise
Wenn ein Remotemethodenaufruf an ein Objekt in einer anderen AppDomainausgeführt wird, generiert die aktuelle CallContext Klasse eine LogicalCallContext , die zusammen mit dem Aufruf an den Remotestandort reist. Nur Objekte, die die ILogicalThreadAffinative Schnittstelle verfügbar machen und in der CallContext gespeichert werden, werden außerhalb des AppDomain. Objekte, die diese Schnittstelle nicht unterstützen, werden in LogicalCallContext Instanzen mit Remotemethodenaufrufen nicht übertragen.