WCF ServiceHost.Close()延迟

6 c# wcf duplex

我有一个简单的WCF双工TCP服务,我试图以编程方式停止.如果我没有任何连接用户,ServiceHost.Close()非常快,但如果我有一个连接用户,我发现Close()函数需要花费相当多的时间,有时> 30秒.这是通常的行为吗?

另一方面,Abort()几乎是瞬间的,我很想用它代替.

Sco*_*ein 10

它可能是.该文档状态

Close方法允许在返回之前完成任何未完成的工作.例如,完成发送任何缓冲的消息.

有一个超载Close()需要a TimeSpan(throws如果超过时间跨度)

Abort() 看起来是毫不拖延地停止WCF主机的最佳方法.


Joh*_*ton 7

确保关闭客户端连接,如下所示:

var channel = factory.CreateChannel();
var channel.DoSomethingForMe();
(channel as ICommunicationObject).Close();
Run Code Online (Sandbox Code Playgroud)

如果您不在通道上执行此Close(),则服务器上的Close()会等待非常长的时间,即使您指定了短暂的超时.