从服务挂起启动流程UseShellExecute false

伊夫斯

我遇到了一件奇怪的事情,找不到发生这种情况的原因。

我有一个service.exe,我从配置注册表中收集数据,然后启动n个进程。

样例代码:

_mProcess.StartInfo = new ProcessStartInfo
{
  FileName = Command,
  Arguments = Argument,
  WorkingDirectory = WorkDir
};
_mProcess.Start();
Pid = _mProcess.Id;

Pid包含进程ID。

现在我添加UseShellExecute = false以获得StandardOutput。

新的示例代码:

_mProcess.StartInfo = new ProcessStartInfo
{
  FileName = Command,
  Arguments = Argument,
  WorkingDirectory = WorkDir //,
  //CreateNoWindow = true,
  UseShellExecute = false,
  //RedirectStandardOutput = true,
  RedirectStandardError = true
  //RedirectStandardInput = true
};
_mProcess.Start();
Pid = _mProcess.Id;

using (var reader = _mProcess.StandardError)
{
  _logger.ToLog("", Company, reader.ReadToEnd(), "RCluster.log", "service");
}

在这种情况下,该过程会返回我可以存储到日志文件中的所有错误。

问题:这段代码是启动一个过程的方法的一部分,该过程我多次调用(取决于我的配置)。因此,使用此代码将调用第一个过程,而不会调用以下过程。服务以某种方式现在等待第一个服务。我以为只会发生这种情况WaitForExit

那么,如何获得标准错误输出却又不使流程阻塞我的主要任务以继续呢?

伊夫斯

@古斯曼:添加您的评论作为答案,您就把我带到正确的答案。然后,我可以接受您的评论作为答案。

致反对者:解释为什么会受到赞赏。

所有人:我添加了一些代码以线程的形式启动新进程。在这种情况下,有必要在另一个线程中启动它以获取`StandardError消息,但不要阻塞主进程(在我的情况下,这是一个服务,可以启动许多子进程)。

      // start as new thread to prevent blocking
      var ths = new ThreadStart(() =>
      {
        mProcess.Start();
        Pid = mProcess.Id;

        // write pid file
        File.WriteAllText(RubyDir + @"\tmp\pids\" + Port + @".pid", Pid.ToString());

        using (var reader = mProcess.StandardError)
        {
          var errorMsg = reader.ReadToEnd();
          if (errorMsg.Length > 0) _logger.ToLog("", Company, errorMsg, "SOLR.log", "service");
        }
      });
      var th = new Thread(ths);
      th.Start();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

服务器启动期间,函数isAssignableFrom返回false

来自分类Dev

WCF服务不断返回false

来自分类Dev

如何以contenteditable启动TinyMCE:false

来自分类Dev

在Windows服务中使用ConfigureAwait(false)?

来自分类Dev

在Windows服务中使用ConfigureAwait(false)?

来自分类Dev

服务器启动一段时间后,req.isAuthenticated()返回false

来自分类Dev

由于hbase.cluster.distributed为false,因此未启动独特的区域服务器

来自分类Dev

当 UseShellExecute == false 时,如何在 C# 进程上强制执行标准输出?

来自分类Dev

当 AutomaticChallenge 为 false 时触发 IdentityServer4 登录流程

来自分类Dev

启动 mongod 服务的 Ansible 任务永远挂起

来自分类Dev

Alfresco 服务器启动被挂起

来自分类Dev

使用Windows服务启动提升的流程

来自分类Dev

为什么false ==“ false”是false?

来自分类Dev

JSF / RichFaces 4问题:渲染为false时启动组件

来自分类Dev

启动或重新启动服务时,systemd挂起

来自分类Dev

File.exists()对于本地帐户中的服务返回false

来自分类Dev

如何设置BRANCH流服务执行TRUE和FALSE分支?

来自分类Dev

Ember-cli余烬服务AssertionError(false == true)

来自分类Dev

Spring Web服务模板将MustUnderstand设置为none或false

来自分类Dev

phpCAS :: isAuthenticated登录其他服务后返回false

来自分类Dev

在托管服务器上卷曲返回false(启用卷曲)

来自分类Dev

无法绑定服务(尝试总是返回false)。为什么?

来自分类Dev

CanActivate Observable在服务检查延迟时返回false

来自分类Dev

保护Tomcat服务器在哪里设置deployXML = false?

来自分类Dev

Windows 服务中的 CreateProcessAsUser,WTSQueryUserToken 函数返回 false

来自分类Dev

当 aspNetCompatibilityEnabled 设置为 false 时,WCF OneWay 服务速度变慢

来自分类Dev

从服务调用的 VirtualProtectEx 返回 false,但 GetLastError 为 0(成功)

来自分类Dev

Centos Auxd流程挂起

来自分类Dev

带有nodejs的摩卡断言assert(false)而不是错误的挂起/超时

Related 相关文章

  1. 1

    服务器启动期间,函数isAssignableFrom返回false

  2. 2

    WCF服务不断返回false

  3. 3

    如何以contenteditable启动TinyMCE:false

  4. 4

    在Windows服务中使用ConfigureAwait(false)?

  5. 5

    在Windows服务中使用ConfigureAwait(false)?

  6. 6

    服务器启动一段时间后,req.isAuthenticated()返回false

  7. 7

    由于hbase.cluster.distributed为false,因此未启动独特的区域服务器

  8. 8

    当 UseShellExecute == false 时,如何在 C# 进程上强制执行标准输出?

  9. 9

    当 AutomaticChallenge 为 false 时触发 IdentityServer4 登录流程

  10. 10

    启动 mongod 服务的 Ansible 任务永远挂起

  11. 11

    Alfresco 服务器启动被挂起

  12. 12

    使用Windows服务启动提升的流程

  13. 13

    为什么false ==“ false”是false?

  14. 14

    JSF / RichFaces 4问题:渲染为false时启动组件

  15. 15

    启动或重新启动服务时,systemd挂起

  16. 16

    File.exists()对于本地帐户中的服务返回false

  17. 17

    如何设置BRANCH流服务执行TRUE和FALSE分支?

  18. 18

    Ember-cli余烬服务AssertionError(false == true)

  19. 19

    Spring Web服务模板将MustUnderstand设置为none或false

  20. 20

    phpCAS :: isAuthenticated登录其他服务后返回false

  21. 21

    在托管服务器上卷曲返回false(启用卷曲)

  22. 22

    无法绑定服务(尝试总是返回false)。为什么?

  23. 23

    CanActivate Observable在服务检查延迟时返回false

  24. 24

    保护Tomcat服务器在哪里设置deployXML = false?

  25. 25

    Windows 服务中的 CreateProcessAsUser,WTSQueryUserToken 函数返回 false

  26. 26

    当 aspNetCompatibilityEnabled 设置为 false 时,WCF OneWay 服务速度变慢

  27. 27

    从服务调用的 VirtualProtectEx 返回 false,但 GetLastError 为 0(成功)

  28. 28

    Centos Auxd流程挂起

  29. 29

    带有nodejs的摩卡断言assert(false)而不是错误的挂起/超时

热门标签

归档