ILogicalThreadAffinative Gränssnitt
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Markerar ett objekt som kan spridas utanför en AppDomain i en 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
- Attribut
Exempel
I följande kodexempel visas hur gränssnittet används ILogicalThreadAffinative för att överföra huvudobjekt och identitetsobjekt till en fjärrplats för identifiering. Om du vill visa koden för den HelloServiceClass klass som används i exemplet läser du exemplet för GetData metoden. Information om hur du visar koden för den serverklass som används i det här exemplet finns i exemplet för RegisterActivatedServiceType klassen. Information om hur du visar koden för klientklassen som används i exemplet finns i exemplet för CallContext klassen.
[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
Kommentarer
När ett fjärrmetodanrop görs till ett objekt i ett annat AppDomaingenererar den aktuella CallContext klassen en LogicalCallContext som färdas tillsammans med anropet till fjärrplatsen. Endast objekt som exponerar ILogicalThreadAffinative gränssnittet och lagras i CallContext sprids utanför AppDomain. Objekt som inte stöder det här gränssnittet överförs inte i LogicalCallContext instanser med fjärrmetodanrop.