我有一项服务,仅用于启动和停止我创建的另一项服务。 我遇到的问题是当我尝试从名为TUTController的Controller服务中停止名为TUT的其他服务时,它会自行停止而不是预期的服务。
public TUTController()
{
InitializeComponent();
observer = new StatusObserver();
observer.Update += new EventHandler<CustomArgs>(observer_Update);
}
void observer_Update(object sender, CustomArgs e)
{
ServiceController sc = new ServiceController("TUT");
sc.Refresh();
switch (e.CurrentStatus)
{
case StatusObserver.Status.On:
if (sc.Status == ServiceControllerStatus.Stopped)
{
sc.Start();
sc.Refresh();
}
break;
case StatusObserver.Status.Off:
if (sc.Status == ServiceControllerStatus.Running)
{
sc.Stop();
sc.Refresh();
}
break;
default:
break;
}
}
观察者是一个只是经常检查数据库的Off / On值并通过Update事件将其发回的类。提前谢谢。
答案 0 :(得分:1)
我建议检查两个服务的名称和依赖关系。
你确定TUT&amp; TUTController是您认为的服务名称吗?
更多的是,SCM是否有可能将TUT列为TUTController的依赖(而不是相反),从而导致它被关闭?
答案 1 :(得分:0)
您可以使用消息传递。
对于Instance,有TUTService和SomeService。 当某些服务想要停止TUTService时,SomeService会向TuTService发送消息StartServiceMessage 在TUTService中,您实现MessageHandler来处理SomeService发送的StartServiceMessage。
在MessageHandler逻辑中,您可以使用sc.stop()您可以使用NServiceBus来实现消息传递