我有一个复杂的应用程序,可以作为Windows服务和控制台应用程序运行。
我主要使用控制台启动进行调试。当我在控制台按Ctrl + C时,应用程序立即停止(进程结束)。
当我将应用程序作为服务运行并选择停止它时,MMC立即说该服务已停止。但是,该过程仍在运行,大约需要一分钟才能停止。我花了很多时间没有问题,但我想让MMC像其他服务一样等待。目前,我可以在旧进程仍在运行时再次启动该服务,这会产生独占资源错误。 MMC中的“重启”也不起作用,因为它不等待进程结束。
如何让我的进程等待或如何找出哪些线程/进程/方法花费时间?
答案 0 :(得分:5)
对于.Net服务,请参阅:How to properly stop a multi-threaded .NET windows service?
对于使用WCF的服务,另请参阅:http://msdn.microsoft.com/en-us/library/ms734781(VS.85).aspx