我在TcpChannel
中遇到了一些麻烦。我想创建一个频道,远程访问一个对象,比方说,一台服务器,并在完成所有这些后关闭频道。问题是我可能需要稍后在相同的端口重新打开相同的频道,而且我很难尝试这样做。如何删除.NET中的TcpChannel对象
连接用我只做:
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
在此先感谢。
您是否在同一应用程序的不同会话或同一会话中重新打开它时遇到问题?如果是后者,您可以在应用程序启动时打开频道,然后在应用程序关闭时关闭/取消注册。 – 2011-04-09 18:36:40
@Paul Sasik我有麻烦,因为tcpChannel只在所有连接都关闭后才关闭,所以我需要结束所有访问到我的远程对象。我想我可以通过做Remoting.Disconnect(object)来做到这一点,但它似乎没有与已经共享的远程对象一起工作,我必须手动完成。我现在会尽力去做。感谢您的全力支持,我对您的所有支持以及您帮助我们的速度感到惊叹。 – matutano 2011-04-10 13:32:14