【问题标题】:How to catch console-closing event?如何捕捉控制台关闭事件?
【发布时间】:2011-10-19 02:44:16
【问题描述】:

我的问题的背景是:

  1. 我有一个 Windows .NET 应用程序 (GUI) 作为主进程运行。
  2. 从这个(父)进程中,我创建了几个子进程作为控制台进程。
  3. 主进程通过命名管道向子进程发送数据。
  4. 在主应用程序中,我有一个子进程列表。

我的问题是每个控制台都有一个关闭(“x”)按钮并且可以终止(无论它是什么方式)。由于我在主应用程序中保留了已创建控制台的列表,因此我想知道控制台何时被终止或退出。

我的控制台(子进程)程序只是一个“main()”,带有一个读取管道(并显示数据)的循环函数。它没有消息系统或任何其他可以处理窗口“退出”的东西。

我想到的第一个想法是从主应用程序中轮询子进程以刷新列表。但这意味着我必须引入一个计时器或一个监视控制台的线程。我不喜欢这个主意。

有人有更好的主意吗?

【问题讨论】:

    标签: windows console windows-vista subprocess pipe


    【解决方案1】:

    WaitForSingleObject(hThread, 0) 将告诉您hThread 参数中指定的线程是否已发出信号并因此完成。 hProcess 也是如此。

    CreateProcess() 调用后,您的子进程的两个句柄都会返回。您可以立即关闭它们,也可以使用WaitForSingleObject 进行监控。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-02
      • 1970-01-01
      相关资源
      最近更新 更多