CallContext.FreeNamedDataSlot(String) 메서드

정의

지정한 이름을 가진 데이터 슬롯을 비웁니다.

public:
 static void FreeNamedDataSlot(System::String ^ name);
public static void FreeNamedDataSlot (string name);
[System.Security.SecurityCritical]
public static void FreeNamedDataSlot (string name);
static member FreeNamedDataSlot : string -> unit
[<System.Security.SecurityCritical>]
static member FreeNamedDataSlot : string -> unit
Public Shared Sub FreeNamedDataSlot (name As String)

매개 변수

name
String

비울 데이터 슬롯의 이름입니다.

특성

예외

직접 실행 호출자에 인프라 권한이 없는 경우

예제

다음 코드 예제에서는 클라이언트가 명명된 데이터 슬롯을 만들고, 논리 스레드에서 반환된 명명된 데이터 슬롯의 값을 표시하고 명명된 데이터 슬롯을 해제하는 메서드를 원격 개체에 호출하는 방법을 보여 줍니다.

// Register the channel.
TcpChannel^ myChannel = gcnew TcpChannel;
ChannelServices::RegisterChannel( myChannel );
RemotingConfiguration::RegisterActivatedClientType( HelloService::typeid, "Tcp://localhost:8082" );

GenericIdentity^ myIdentity = gcnew GenericIdentity( "Bob" );
array<String^>^ idStr = gcnew array<String^>(1);
idStr[ 0 ] = "Level1";
GenericPrincipal^ myPrincipal = gcnew GenericPrincipal( myIdentity, idStr );
MyLogicalCallContextData ^ myData = gcnew MyLogicalCallContextData( myPrincipal );

// Set DataSlot with name parameter.
CallContext::SetData( "test data", myData );

// Create a remote Object*.
HelloService ^ myService = gcnew HelloService;
if ( myService == nullptr )
{
   Console::WriteLine( "Cannot locate server." );
   return  -1;
}

// Call the Remote methods.
Console::WriteLine( "Remote method output is {0}", myService->HelloMethod( "Microsoft" ) );

MyLogicalCallContextData ^ myReturnData =
   (MyLogicalCallContextData^)( CallContext::GetData( "test data" ) );
if ( myReturnData == nullptr )
{
   Console::WriteLine( "Data is 0." );
}
else
{
   Console::WriteLine( "Data is ' {0}'", myReturnData->numOfAccesses );
}

// DataSlot with same Name Parameter which was Set is Freed.
CallContext::FreeNamedDataSlot( "test data" );
MyLogicalCallContextData ^ myReturnData1 =
   (MyLogicalCallContextData^)( CallContext::GetData( "test data" ) );
if ( myReturnData1 == nullptr )
{
   Console::WriteLine( "FreeNamedDataSlot Successful for test data" );
}
else
{
   Console::WriteLine( "FreeNamedDataSlot Failed  for test data" );
}
// Register the channel.
TcpChannel myChannel = new TcpChannel ();
ChannelServices.RegisterChannel(myChannel);
RemotingConfiguration.RegisterActivatedClientType(typeof(HelloService),"Tcp://localhost:8082");

GenericIdentity myIdentity = new GenericIdentity("Bob");
GenericPrincipal myPrincipal = new GenericPrincipal(myIdentity,new string[] {"Level1"});
MyLogicalCallContextData myData = new MyLogicalCallContextData(myPrincipal);

// Set DataSlot with name parameter.
CallContext.SetData("test data",myData);

// Create a remote object.
HelloService myService = new HelloService();
if (myService == null)
{
   Console.WriteLine("Cannot locate server.");
   return;
}

// Call the Remote methods.
Console.WriteLine("Remote method output is " + myService.HelloMethod("Microsoft"));

MyLogicalCallContextData myReturnData =
                           (MyLogicalCallContextData) CallContext.GetData("test data");
if (myReturnData == null )
   Console.WriteLine("Data is null.");
else
   Console.WriteLine("Data is '{0}'", myReturnData.numOfAccesses);

// DataSlot with same Name Parameter which was Set is Freed.
CallContext.FreeNamedDataSlot("test data");
MyLogicalCallContextData myReturnData1 =
                        (MyLogicalCallContextData) CallContext.GetData("test data");
if (myReturnData1 == null )
   Console.WriteLine("FreeNamedDataSlot Successful for test data");
else
   Console.WriteLine("FreeNamedDataSlot Failed  for test data");
' Register the channel.
Dim myChannel As New TcpChannel()
ChannelServices.RegisterChannel(myChannel)
RemotingConfiguration.RegisterActivatedClientType(GetType(HelloService), "Tcp://localhost:8082")


Dim myIdentity As New GenericIdentity("Bob")
Dim myPrincipal As New GenericPrincipal(myIdentity, New String() {"Level1"})
Dim myData As New MyLogicalCallContextData(myPrincipal)

' Set DataSlot with name parameter.
CallContext.SetData("test data", myData)

' Create a remote object.
Dim myService As New HelloService()
If myService Is Nothing Then
   Console.WriteLine("Cannot locate server.")
   return
End If

' Call the Remote methods.
Console.WriteLine("Remote method output is " + myService.HelloMethod("Microsoft"))

Dim myReturnData As MyLogicalCallContextData = _
                  CType(CallContext.GetData("test data"), MyLogicalCallContextData)

If myReturnData Is Nothing Then
   Console.WriteLine("Data is null.")
Else
   Console.WriteLine("Data is '{0}'", myReturnData.numOfAccesses)
End If 

' DataSlot with same Name Parameter which was Set is Freed.
CallContext.FreeNamedDataSlot("test data")
Dim myReturnData1 As MyLogicalCallContextData = _
                  CType(CallContext.GetData("test data"), MyLogicalCallContextData)

If myReturnData1 Is Nothing Then
   Console.WriteLine("FreeNamedDataSlot Successful for test data")
Else
   Console.WriteLine("FreeNamedDataSlot Failed  for test data")
End If

적용 대상