【问题标题】:How to have single command window for multiple processes in c#如何在 C# 中为多个进程提供单个命令窗口
【发布时间】:2018-02-03 09:14:52
【问题描述】:

我有一个 winforms 应用程序,我在其中循环运行一个进程(代码如下所示)。假设我有 10 个项目,我得到 10 个运行操作的命令窗口。所以,我想知道是否有一种方法可以让我运行该进程 10 次,但只打开一个命令窗口来运行我的所有操作。

Process p = new Process();

        try
        {
            var pInfo = new ProcessStartInfo(executable, args);
            pInfo.UseShellExecute = false;
            pInfo.RedirectStandardOutput = true;
            pInfo.RedirectStandardError = true;
            pInfo.WorkingDirectory = workingDir;

            p.StartInfo = pInfo;
            p.EnableRaisingEvents = true;
            SubscribeEvents(p);

            p.Start();
            p.WaitForExit();
        }

【问题讨论】:

  • 您可以隐藏所有窗口,但您可能想打开另一个窗口,以便至少显示一些内容?
  • 或者您可以像批处理文件一样执行此操作,但是所有操作将一次运行一个,而不是同时运行。
  • @Derek 是的,我只想打开一个窗口。这样我就不会被多次弹出并抓住焦点使我的计算机无法使用,直到所有进程完成。
  • 如果你从你的视图代码中分离上面的 sn-p,那么你可以制作一个不同的视图,例如一个用户控件,它显示一个进程的数据并在一个单一的窗口中使用一个或多个.
  • pInfo.CreateNoWindow = true;

标签: c# winforms process command-prompt


【解决方案1】:

我猜如果你在做winforms,你实际上可能已经打开了一个主窗口。

您可以使用它来隐藏您的其他窗口:

pInfo.CreateNoWindow = true;

【讨论】:

  • 谢谢 我已经试过了,但是它会关闭所有的窗口。我的要求是,如果我可以只为所有操作打开一个命令窗口:)
  • 可以一个接一个地运行所有的动作,还是必须同时运行?
  • 你也可以看看这个:stackoverflow.com/questions/649634/… 看起来 "start /b" 可以在批处理文件中使用来启动另一个进程而无需打开新窗口。
  • 是的,我可以一个接一个地运行操作。顺便说一下,这里的操作是 git Fetch/Pull 用于选定的存储库。所以我可以一件一件的去做。
  • 考虑批处理文件的一种简单方法是从命令提示符依次运行的命令列表。您可以按顺序保存包含所有命令的 .bat 文件,然后运行该 .bat 文件。您将在命令提示符下自行测试您的 .bat 文件。有时您可以让您的程序将批处理文件保存到磁盘(如果您需要在运行时构建命令字符串)然后运行该文件。
猜你喜欢
  • 2017-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
相关资源
最近更新 更多