我使用 .Net 远程处理在 C# 中编写了一个客户端/服务器模型。如果我将客户端连接到服务器,然后在服务器关闭时终止服务器并重新启动它而不尝试从客户端调用任何服务器方法,我可以愉快地重新连接。
如果我关闭服务器然后尝试从客户端 ping 服务器(我从一个单独的线程执行以避免无休止的等待),那么当服务器重新联机时,客户端永远无法与它交谈,并且我的 Ping 线程被触发在停机期间,在远程库的深处永远等待。我尝试中止此操作(如果尝试加入线程在短时间内失败)但它不会中止。我想知道这是否是问题的一部分。
如果我启动另一个客户端,那么该客户端可以与服务器正常通信。我想我需要重新启动原始客户端的某些方面,但看不到需要关闭的内容。我当然将我连接到的服务器清空并使用相同的地址调用 Activator.GetObject(第二个客户端连接到服务器的操作很好),但重新获取服务器根本没有帮助。
服务器通过 RegisterWellKnownServiceType 作为单例运行。