gpt4 book ai didi

c# - 如何在 .NET 中删除 TcpChannel 对象

转载 作者:太空宇宙 更新时间:2023-11-03 14:20:20 25 4
gpt4 key购买 nike

我在使用 TcpChannel 时遇到了一些问题。我想创建一个 channel ,远程访问一个对象,比方说,一个服务器,完成所有这些之后,关闭 channel 。问题是我可能需要稍后在同一个端口重新打开同一个 channel ,而我在尝试这样做时遇到了一些困难。

出于连接目的,我只做:

var channel = new TcpChannel(port);

Console.WriteLine("Start Connection received at Server");
ChannelServices.RegisterChannel(channel, false);

//Initiate remote service as Marshal
RemotingServices.Marshal(this, "Server", typeof(Server));

然后关闭它,我只是这样做:

Console.WriteLine("Stop Connection at Server");

channel.StopListening(null);
RemotingServices.Disconnect(this);
ChannelServices.UnregisterChannel(channel);
channel = null;

在此之后,如果我尝试创建一个新的 tcpChannel 实例,我会得到一个异常,指出 tcpChannel 连接是唯一的,它们必须在不同的端口上。

那么,我该如何关闭 tcpChannel? :S

提前致谢。

最佳答案

您的关闭代码正在运行。
重新检查日志,您在某处错过了“在服务器上停止连接”。

更新:

我的日志(没有错误):
启动服务器接收到的连接
在服务器停止连接
启动服务器接收到的连接
在服务器上停止连接

有实现代码:

    private void button1_Click(object sender, EventArgs e)
{
channel = new TcpChannel(port);

Trace.WriteLine("Start Connection received at Server");
ChannelServices.RegisterChannel(channel, false);


//Initiate remote service as Marshal
RemotingServices.Marshal(this, "Server", typeof(Server));
}

private void button2_Click(object sender, EventArgs e)
{
Trace.WriteLine("Stop Connection at Server");

channel.StopListening(null);
RemotingServices.Disconnect(this);
ChannelServices.UnregisterChannel(channel);
channel = null;
}

关于c# - 如何在 .NET 中删除 TcpChannel 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5606982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com