2009-08-17 124 views
0

我有一个Windows服务使用WCF与gui进行通信。不幸的是,当我想从GUI重新启动服务(重装配置),我得到的消息:如何等待WCF释放端口?

已经有上IP端点的听众0.0.0.0:1111

我重新启动使用休耕代码服务:

 if (sc.Status == ServiceControllerStatus.Running) 
     { 
      sc.Stop(); 
      sc.WaitForStatus(ServiceControllerStatus.Stopped); 
      sc.Start(); 
     } 

的问题是,服务控制器已经在停止状态和WCF仍然没有释放端口。我该如何等待这种情况发生?

+0

港口是否在TIME_WAIT? – Mark 2009-08-17 17:14:44

+0

这是一个tcp连接,所以可能答案是肯定的。该端口不会被阻塞很长时间 - 仅需几秒钟,我就可以再次运行该服务)。 – kyrisu 2009-08-17 17:58:17

+0

你在OnStop方法中做了什么?请显示代码。 – 2009-08-17 18:51:30

回答

1

我一直在努力解决同样的问题。在OnStop方法中,我调用ServiceHost的Close()方法,然后将服务主机自身设置为null。

到目前为止,只是这样做已经使问题消失......迄今为止。