如何在两个命令之间暂停



我想在停止和启动服务的两个dos命令之间暂停。

这是代码: (代码是从Windows服务如何以编程方式重新启动自身

Process proc = new Process();
ProcessStartInfo psi = New ProcessStartInfo();
psi.CreateNoWindow = true;
psi.FileName = "cmd.exe";
psi.Arguments = "/C net stop YOURSERVICENAMEHERE && net start YOURSERVICENAMEHERE";
psi.LoadUserProfile = false;
psi.UseShellExecute = false;
psi.WindowStyle = ProcessWindowStyle.Hidden;
proc.StartInfo = psi;
proc.Start();

基本上,我想在停止和开始之间放置一个"暂停":

psi.Arguments = "/C net stop YOURSERVICENAMEHERE && timeout /t 10 /nobreak && net start YOURSERVICENAMEHERE"

有一些方法可以使用 ServiceController 类在 .NET 中执行此操作,并避免与 shell 进行任何交互。

您可以在此处找到这些内容:MSDN ServiceController

如果您希望通过CMD调用进程,则可以创建两个单独的进程并调用Thread.Sleep(毫秒(或Task.Delay(毫秒(来等待。此外,请确保在开始进程后,调用 .WaitForExit(( 方法,以便该过程在继续之前完成。

就个人而言,我建议使用ServiceController,因为它使用所有.NET组件,而不是依赖shell。

最新更新