xdu*_*ine 6 c# multithreading windows-services
我是一个完全熟悉Windows服务的人.我有一个基本的骨架服务,我目前正在这样做:
protected override void OnStart(string[] args)
{
base.OnStart(args);
Process.Start(@"someProcess.exe");
}
Run Code Online (Sandbox Code Playgroud)
只是为了在程序开始时启动exe.
但是,当进程从exe退出开始时,我想让服务停止.我很确定我需要做一些线程(我也是初学者),但我不确定这是如何工作的总体轮廓,也不确定从内部停止进程的具体方法.你能帮助我解决这个问题的一般过程(即从OnStart开始一个线程,那么......?)?谢谢.
Alb*_*nbo 11
您可以使用a 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();
}
Run Code Online (Sandbox Code Playgroud)
编辑
您可能还想将Process p一个成员移动到一个类成员并停止该过程,OnStop以确保如果exe出现乱码,您可以再次停止该服务.
protected override void OnStop()
{
p.Kill();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22509 次 |
| 最近记录: |