如何使用windows服务运行EXE[英] How can I run an EXE using a windows service

本文是小编为大家收集整理的关于如何使用windows服务运行EXE的处理方法,想解了如何使用windows服务运行EXE的问题怎么解决?如何使用windows服务运行EXE问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

大家好,

我已经设计了一个 exe,现在我想使用 windows 服务启动这个 EXE.它的主要目的是每 30 分钟检查一次 EXE 是否正在运行或不使用该 Windows 服务.如果未运行,则 windows 服务将启动它.

问候
Shahid Mehmood

推荐答案

看看 类似的 QA[^],请检查您是否能得到一些帮助.

您可以使用 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(); 
} 


编辑您可能还希望将 Process p 移动到类成员并在 OnStop 中停止该进程,以确保如果 exe 失控,您可以再次停止服务.
protected override void OnStop() 
{ 
    p.Kill(); 
}

BackgroundWorker() 未声明.那是什么.RunWorkerAsync() 定义在哪里是详细信息.

只需几行的任何建议都不需要代码,只是为了知道它是如何可能的.如果示例然后赞赏.

本文地址:https://www.itbaoku.cn/post/1356011.html