我的 C# 应用程序创建一个批处理脚本,然后生成一个进程来执行此脚本。
此应用程序需要作为 Windows 服务运行。此外,我还需要一个独立模式,我将通过命令行参数指示它应该只运行一次并退出。
问题是当我运行独立版本时,我可以看到应用程序(启动器)的多个实例正在生成。但是,如果我要从 Visual Studio 中运行它,它的行为即执行一次并退出。
有人可以帮我了解发生了什么吗?
这是带有 main() 的类
static class Launcher
{
static void Main(String[] args)
{
if(args[0] == "/standalone")
{
using(MyService service = new MyService())
{
service.StartService();
service.StopService();
}
}
else
{
System.ServiceProcess.ServiceBase[] ServicesToRun;
ServicesToRun = new System.ServiceProcess.ServiceBase[]
{ new MyService() };
System.ServiceProcess.ServiceBase.Run(ServicesToRun);
}
}
}
MyService 类:
public partial class MyService : ServiceBase
{
protected override void OnStart(string[] args)
{
Process p = new Process();
p.StartInfo.FileName = "C:\abc.bat";
p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
p.Start();
}
protected override void OnStop()
{
// Log something
}
public void StartService()
{ this.OnStart(null); }
public void StopService()
{ this.OnStop() }
}