Tar*_*ied 4 c# windows-services
onStart()当客户没有许可证时,我想在方法中停止Windows服务.我用service.Stop(),但它不起作用.
protected override void OnStart(string[] args)
{
try
{
_bridgeServiceEventLog.WriteEntry("new OnStart");
if (LicenseValidetor.ValidCountAndTypeDevices())
{
WsInitializeBridge();
}
else
{
service = new ServiceController("BridgeService");
service.Stop();
_bridgeServiceEventLog.WriteEntry("LicenseValidetor Error");
}
_bridgeServiceEventLog.WriteEntry("end Start");
}
catch (Exception e)
{
_bridgeServiceEventLog.WriteEntry("error In onstart method ");
}
}
Run Code Online (Sandbox Code Playgroud)
您无法在OnStart同一服务的方法中停止服务.
ServiceController.Stop内部调用的方法ControlService(或它的Ex对应方式).请注意,此功能失败的原因之一是:
ERROR_SERVICE_CANNOT_ACCEPT_CTRL 无法将请求的控制代码发送到服务,因为服务的状态为SERVICE_STOPPED,SERVICE_START_PENDING或SERVICE_STOP_PENDING.
好吧,猜猜看 - 当你进入你的OnStart方法时,你的服务状态是SERVICE_START_PENDING.
处理这种情况的正确方法是发出任何其他线程的信号,表明您可能已经开始让它们退出,然后退出您的OnStart方法.服务控制管理器将注意到该进程已退出并将您的服务状态还原为SERVICE_STOPPED.它还可以通知交互式用户"服务已启动然后停止"或此类词语.
| 归档时间: |
|
| 查看次数: |
7609 次 |
| 最近记录: |