ILogicalThreadAffinative Antarmuka
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menandai objek yang dapat disebarluaskan di luar AppDomain dalam 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
- Atribut
Contoh
Contoh kode berikut menunjukkan penggunaan ILogicalThreadAffinative antarmuka untuk mengirimkan Objek Utama dan Identitas ke lokasi jarak jauh untuk identifikasi. Untuk melihat kode untuk kelas yang HelloServiceClass
digunakan dalam sampel, lihat contoh untuk metode .GetData Untuk melihat kode untuk kelas server yang digunakan dalam sampel ini, lihat contoh untuk RegisterActivatedServiceType kelas . Untuk melihat kode untuk kelas klien yang digunakan dalam sampel, lihat contoh untuk CallContext kelas .
[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
Keterangan
Ketika panggilan metode jarak jauh dilakukan ke objek di objek lain AppDomain, kelas saat ini CallContext menghasilkan LogicalCallContext yang melakukan perjalanan bersama dengan panggilan ke lokasi jarak jauh. Hanya objek yang mengekspos ILogicalThreadAffinative antarmuka dan disimpan dalam CallContext yang disebarluaskan di AppDomainluar . Objek yang tidak mendukung antarmuka ini tidak ditransmisikan dalam LogicalCallContext instans dengan panggilan metode jarak jauh.