2

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チャネルを開いてソケットを拘束しているように見えることです。デバッグを停止したとき、またはサービスが停止した場合、このソケットを閉じるにはどうすればよいですか。サービスデストラクタ、およびOnStopOnShutdownメソッドの両方にブレークポイントを設定しようとしましたが、これらは呼び出されません。

4

1 に答える 1

1

Visual Studioでデバッグを終了すると、ファイナライザーを呼び出さずにプロセスが強制終了され、コードにあるfinallyブロックも実行されません。

于 2012-06-29T09:52:08.913 に答える