【问题标题】:How can I pause between two commands如何在两个命令之间暂停
【发布时间】:2019-01-18 10:35:18
【问题描述】:

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

代码如下: (代码借自How can a windows service programmatically restart itself?

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"

【问题讨论】:

  • 不再...
  • 为什么不干脆停止服务,使用 NET 中可用的许多休眠方法,然后启动第二个服务?是否必须在单个命令行上执行?
  • 它是同一个服务被停止和启动......一旦服务停止......没有第二个“启动”命令就无法再次启动......(这是内部到服务)

标签: c# process command


【解决方案1】:

有一些方法可以在 .NET 中使用 ServiceController 类并避免与 shell 的任何交互。

你可以在这里找到:MSDN ServiceController

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 2017-05-20
    • 2021-09-19
    • 1970-01-01
    • 2021-10-18
    • 1970-01-01
    相关资源
    最近更新 更多