我正在调试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
方法,但这些方法都没有被调用。
答案 0 :(得分:1)
据我所知,当您在Visual Studio中结束调试时,只是在没有调用终结器的情况下终止该过程,甚至不会执行位于finally
块的代码。