CallContext.SetData メソッド
アセンブリ: mscorlib (mscorlib.dll 内)



SetData メソッドを使用して、識別のためにリモートの場所に プリンシパル オブジェクトと ID オブジェクト を送信する例を次のコードに示します。サンプルで使用する LogicalCallContextData クラスのコードを表示するには、ILogicalThreadAffinative インターフェイスのトピックの例を参照してください。サンプルで使用する HelloServiceClass クラスのコードを表示するには、GetData メソッドのトピックの例を参照してください。この例で使用されているサーバー クラスのコードを確認するには、RegisterActivatedServiceType クラスの例を参照してください。
Imports System Imports System.Runtime.Remoting Imports System.Runtime.Remoting.Channels Imports System.Runtime.Remoting.Channels.Tcp Imports System.Runtime.Remoting.Messaging Imports System.Security.Principal Imports System.Security.Permissions Public Class ClientClass <PermissionSet(SecurityAction.LinkDemand)> _ Public Shared Sub Main() Dim ident As New GenericIdentity("Bob") Dim prpal As New GenericPrincipal(ident, New String() {"Level1"}) Dim data As New LogicalCallContextData(prpal) 'Enter data into the CallContext CallContext.SetData("test data", data) Console.WriteLine(data.numOfAccesses) ChannelServices.RegisterChannel(New TcpChannel()) RemotingConfiguration.RegisterActivatedClientType(GetType(HelloServiceClass), "tcp://localhost:8082") Dim service As New HelloServiceClass() If service Is Nothing Then Console.WriteLine("Could not locate server.") Return End If ' call remote method Console.WriteLine() Console.WriteLine("Calling remote object") Console.WriteLine(service.HelloMethod("Caveman")) Console.WriteLine(service.HelloMethod("Spaceman")) Console.WriteLine(service.HelloMethod("Bob")) Console.WriteLine("Finished remote object call") Console.WriteLine() 'Extract the returned data from the call context Dim returnedData As LogicalCallContextData = CType(CallContext.GetData("test data"), LogicalCallContextData) Console.WriteLine(data.numOfAccesses) Console.WriteLine(returnedData.numOfAccesses) End Sub 'Main End Class 'ClientClass
using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; using System.Runtime.Remoting.Messaging; using System.Security.Principal; using System.Security.Permissions; public class ClientClass { [PermissionSet(SecurityAction.LinkDemand)] public static void Main() { GenericIdentity ident = new GenericIdentity("Bob"); GenericPrincipal prpal = new GenericPrincipal(ident, new string[] {"Level1"}); LogicalCallContextData data = new LogicalCallContextData(prpal); //Enter data into the CallContext CallContext.SetData("test data", data); Console.WriteLine(data.numOfAccesses); ChannelServices.RegisterChannel(new TcpChannel()); RemotingConfiguration.RegisterActivatedClientType(typeof(HelloServiceClass) , "tcp://localhost:8082"); HelloServiceClass service = new HelloServiceClass(); if(service == null) { Console.WriteLine("Could not locate server."); return; } // call remote method Console.WriteLine(); Console.WriteLine("Calling remote object"); Console.WriteLine(service.HelloMethod("Caveman")); Console.WriteLine(service.HelloMethod("Spaceman")); Console.WriteLine(service.HelloMethod("Bob")); Console.WriteLine("Finished remote object call"); Console.WriteLine(); //Extract the returned data from the call context LogicalCallContextData returnedData = (LogicalCallContextData)CallContext.GetData("test data"); Console.WriteLine(data.numOfAccesses); Console.WriteLine(returnedData.numOfAccesses); } }
#using <system.dll> #using <system.runtime.remoting.dll> #using <service.dll> using namespace System; using namespace System::Runtime::Remoting; using namespace System::Runtime::Remoting::Channels; using namespace System::Runtime::Remoting::Channels::Tcp; using namespace System::Runtime::Remoting::Messaging; using namespace System::Security::Principal; int main() { GenericIdentity^ ident = gcnew GenericIdentity( "Bob" ); array<String^>^id = gcnew array<String^>(1); id[ 0 ] = "Level1"; GenericPrincipal^ prpal = gcnew GenericPrincipal( ident,id ); LogicalCallContextData ^ data = gcnew LogicalCallContextData( prpal ); //Enter data into the CallContext CallContext::SetData( "test data", data ); Console::WriteLine( data->numOfAccesses ); ChannelServices::RegisterChannel( gcnew TcpChannel ); RemotingConfiguration::RegisterActivatedClientType( HelloServiceClass::typeid, "tcp://localhost:8082" ); HelloServiceClass ^ service = gcnew HelloServiceClass; if ( service == nullptr ) { Console::WriteLine( "Could not locate server." ); return 0; } // call remote method Console::WriteLine(); Console::WriteLine( "Calling remote Object*" ); Console::WriteLine( service->HelloMethod( "Caveman" ) ); Console::WriteLine( service->HelloMethod( "Spaceman" ) ); Console::WriteLine( service->HelloMethod( "Bob" ) ); Console::WriteLine( "Finished remote Object* call" ); Console::WriteLine(); //Extract the returned data from the call context LogicalCallContextData ^ returnedData = static_cast<LogicalCallContextData ^>(CallContext::GetData( "test data" )); Console::WriteLine( data->numOfAccesses ); Console::WriteLine( returnedData->numOfAccesses ); return 0; }


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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


Weblioに収録されているすべての辞書からCallContext.SetData メソッドを検索する場合は、下記のリンクをクリックしてください。

- CallContext.SetData メソッドのページへのリンク