CallContext.FreeNamedDataSlot(String) 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
清空具有指定名称的数据槽。
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