VS2010でWindowsサービスをデバッグしています。
static void Main()
{
#if (DEBUG)
var s1 = new Service1();
s1.Start();
Thread.Sleep(Timeout.Infinite);
#else
ServiceBase.Run(new ServiceBase[]
{
new Service1()
});
#endif
}
これにより、デバッガーでサービスを実行できます。問題は、起動時に、デバッグを停止してプロセスを強制終了した後、サービスがWCFチャネルを開いてソケットを拘束しているように見えることです。デバッグを停止したとき、またはサービスが停止した場合、このソケットを閉じるにはどうすればよいですか。サービスデストラクタ、およびOnStop
とOnShutdown
メソッドの両方にブレークポイントを設定しようとしましたが、これらは呼び出されません。