我有一个简单的WCF双工TCP服务,我试图以编程方式停止它。如果我没有任何连接的用户,ServiceHost.Close()是非常快的,但是如果我有一个连接的用户,我发现Close()函数花费了相当多的时间,有时超过30秒。这是常见的行为吗?
另一方面,Abort()几乎是瞬间的,我很想用它来代替。
发布于 2009-06-22 02:07:44
也许是吧。docs声明
Close方法允许在返回之前完成任何未完成的工作。例如,完成所有缓冲消息的发送。
Close()有一个重载,它需要一个TimeSpan (如果超过timespan,则为throws )
Abort()看起来是无延迟停止WCF主机的最好方法。
发布于 2012-10-02 09:08:17
确保关闭客户端连接,如下所示:
var channel = factory.CreateChannel();
var channel.DoSomethingForMe();
(channel as ICommunicationObject).Close();如果不在通道上执行Close(),那么服务器上的Close()会等待很长一段时间,即使您指定了很短的超时。
发布于 2009-08-30 19:05:19
如果您不介意终止任何正在进行的服务调用,那么Abort()是可行的方法。Close()是关闭服务的一种礼貌方式。
https://stackoverflow.com/questions/1025240
复制相似问题