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 通道,在我通过停止调试终止进程后,该通道似乎占用了一个套接字。当我停止调试或服务停止时,如何关闭此套接字。我尝试在服务析构函数以及OnStopandOnShutdown方法中设置断点,但这些都没有被调用。

4

1 回答 1

1

据我所知,当您在 Visual Studio 中结束调试时,该进程只是在没有调用终结器的情况下被终止,甚至代码定位finally块也没有执行。

于 2012-06-29T09:52:08.913 回答