c# – 如何从exe服务运行exe并在exe进程退出时停止服务?
发布时间:2020-12-15 18:17:40 所属栏目:百科 来源:网络整理
导读:我是一个完全熟悉 Windows服务的人.我有一个基本的骨架服务,我目前正在这样做: protected override void OnStart(string[] args) { base.OnStart(args); Process.Start(@"someProcess.exe"); } 只是为了在程序开始时启动exe. 但是,当进程从exe退出开始时,我
我是一个完全熟悉
Windows服务的人.我有一个基本的骨架服务,我目前正在这样做:
protected override void OnStart(string[] args) { base.OnStart(args); Process.Start(@"someProcess.exe"); } 只是为了在程序开始时启动exe. 但是,当进程从exe退出开始时,我想让服务停止. 解决方法
您可以使用
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(); } 编辑 protected override void OnStop() { p.Kill(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |