CallContext.FreeNamedDataSlot(String) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Empties a data slot with the specified name.
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)
Parameters
- name
- String
The name of the data slot to empty.
- Attributes
Exceptions
The immediate caller does not have infrastructure permission.
Examples
The following code example shows a client creating a named data slot, calling a method on the remote object that displays the value of the named data slot that was returned from the logical thread, and frees that named data slot.
// 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
Applies to
GitHub에서 Microsoft와 공동 작업
이 콘텐츠의 원본은 GitHub에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
.NET