由于我(和互联网上的许多其他人)在使用.NET Remoting时无法配置客户端TcpChannel超时(请不要建议正确的修复程序,我已经尝试了所有的方法,但没有WCF建议),我想出了一个可以配置的创建客户端超时的不错的解决方法。如果我通过一个单独的定时器线程为每个Remoting调用提供消息,而该调用要么超时,要么抛出异常,那么我可以终止该线程并假设服务器已关闭。
然而,我是由另一位同事运行的,他坚持认为我这样做可能会在.NET的本机代码中造成死锁。我在网上读到过其他类似这类技术的例子,比如这里的帖子,所以我不确定担心僵局是否真的是我应该担心的事情。我可以看到,如果线程在发送或接收东西的过程中中止,这可能是一个问题,但如果我们只是在等待响应,那就不是问题了。
由于Dan没有发布答案,只是发表了评论,我将这个答案归因于他。这种管理超时的方法似乎很好,只要采取预防措施确保线程在超时时不会继续执行。我还建议不要使用Thread.Artrt,除非你知道自己在做什么。