2009-08-17 97 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。

到目前爲止,只是這樣做已經使問題消失......迄今爲止。