Eas*_*one 7 .net c# debugging service visual-studio
我有两个服务流程(来自System.ServiceProcess.ServiceBase
)
MyService1
和MyService2
。
我正在尝试在Main()
Windows Service的中运行它们Programm.cs
。
static void Main()
{
ServiceBase[] servicesToRun = { new MyService1(), new MyService2() };
ServiceBase.Run(servicesToRun);
}
Run Code Online (Sandbox Code Playgroud)
在这OnStart
两种方法中MyService1
,MyService2
我都将其写入日志文件,以便可以判断它们是否正在运行。
系统运行良好,我可以安装该服务。
但只能MyService1
运行。MyService2
什么都不做(即没有启动日志条目)。当我更改数组中的顺序时:
ServiceBase[] servicesToRun = { new MyService2(), new MyService1() }
Run Code Online (Sandbox Code Playgroud)
只MyService2
运行。
为了深入了解这一点,我使用了一个小工具AndersonImes.ServiceProcess.ServicesLoader(https://windowsservicehelper.codeplex.com/)来解决无法在Visual Studio中直接调试Windows服务的局限性。有了这个工具,我既可以得到服务MyService1
,MyService2
又可以彼此启动和运行。但是我仍然不知道为什么Windows仅运行ServiceBase[] servicesToRun
数组中的第一项。
有任何想法吗?
我终于在这里找到了答案:http : //www.bryancook.net/2008/04/running-multiple-net-services-within.html。一个很好的隐藏资源,谢谢“布莱恩”!希望这可以帮助下一个开发人员节省时间。
但是,关于ServicesDependedOn的解释与我在项目中看到的并不完全匹配。这不是要启动它们,而是要确保它们已启动。还要查看https://msdn.microsoft.com/zh-cn/library/system.serviceprocess.servicecontroller.servicesdependedon%28v=vs.110%29.aspx。我不需要这个,因为它们彼此不依赖。
归档时间: |
|
查看次数: |
5407 次 |
最近记录: |