2009-08-17 17 views
0

私はWCFを使ってguiと通信するWindowsサービスを持っています。私はGUIからサービスを再起動したい残念ながら、ときに私がメッセージを取得します(設定を再ロードする):WCFがポートを解放するのを待つ方法はありますか?

0.0.0.0:1111

私は再起動してるIPエンドポイント上のリスナーがすでにあります

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

問題は、サービスコントローラーが停止し、WCFはまだポートを解放していなかった上、すでに地位を持っていることです:休閑コードを使用してサービス。これが起こるのをどうやって待つことができますか?

+0

ポートはTIME_WAITに残っていましたか? – Mark

+0

これはtcp接続なので、おそらく答えはyesです。ポートは長時間ブロックされません。ほんの数秒でサービスを再開できます。 – kyrisu

+0

あなたはあなたのOnStopメソッドで何をしましたか?コードを表示してください。 –

答えて

1

私は同じ問題で苦労しています。 OnStopメソッドでは、ServiceHostのClose()メソッドを呼び出して、サービスホスト自体をnullに設定します。

これまでのところ、これを実行するだけで問題が解決されました...これまでのところ。

関連する問題