我是使用 Windows 服务的完全初学者。我已经为该服务制定了基本框架,目前正在这样做:
protected override void OnStart(string[] args)
{
base.OnStart(args);
Process.Start(@"someProcess.exe");
}
只是为了在程序开始时启动 exe。
但是,我希望当从 exe 启动的进程退出时让服务自行停止。
我很确定我需要做某种线程(我也是初学者),但我不确定它是如何工作的总体轮廓,也不确定从内部停止进程的具体方法。
您能帮助我完成此操作的一般流程吗(即从 OnStart 启动一个线程,然后……?)?谢谢。
您可以使用BackgroundWorker对于线程,使用Process.WaitForExit()等待进程终止,直到您停止服务。
你是对的,你应该做一些线程,在OnStart
启动服务时可能会出现有关无法从 Windows 正确启动的错误。
protected override void OnStart(string[] args)
{
BackgroundWorker bw = new BackgroundWorker();
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.RunWorkerAsync();
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
Process p = new Process();
p.StartInfo = new ProcessStartInfo("file.exe");
p.Start();
p.WaitForExit();
base.Stop();
}
Edit您可能还想移动Process p
到班级成员并停止该过程OnStop
以确保在 exe 发生故障时您可以再次停止服务。
protected override void OnStop()
{
p.Kill();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)