Поделиться через


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

Применяется к