c# - 从 Form 启动外部 exe,然后等待它生成文件,或者关闭

标签 c# visual-studio-2010

我想做一些非常简单的事情,我希望有一种简单的方法来做这件事!

  1. 在按下按钮时从我的用户表单应用程序启动一个外部 exe(例如使用 Process.Start()?)。
  2. 在我的应用程序中等待此 exe 生成已知文件或关闭。 (除了等待之外,我不需要在我的申请中进行任何其他事件)
  3. 如果 exe 已经生成了所需的文件,它应该被自动终止(大概使用 Process.Kill())

在这个阶段,我的表单输入应该恢复活跃。

启动的 exe 有自己的用户界面,我的用户将在它处于事件状态时使用它。 我认为关键在于有效地进行等待。我假设我可以启动一个计时器循环,它会每隔几百毫秒监视文件的出现和启动的 exe 的关闭。

那时 PC 几乎不会做其他事情,我觉得在这种情况下,简单性胜过效率。

最佳答案

你有基本的想法。

  1. Process.Start 将启动流程。
  2. Process.WaitForExit将阻塞直到应用程序完成
  3. 根据您的第二点(见上文),您不需要终止它,因为它会完成

如果可执行文件实际上没有成功完成,您也可以使用 FileSystemWatcher观察输出文件的变化,然后使用 Process.CloseMainWindowProcess.Kill在正确生成输出后终止它。

关于c# - 从 Form 启动外部 exe,然后等待它生成文件,或者关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13071884/

相关文章:

c# - WCF - 绑定(bind)错误

visual-studio-2010 - 在2.0到3.5项目转换后,Visual Studio 2010编译器看不到Web引用 namespace

visual-studio-2010 - Visual Studio 2010 - 宏菜单被禁用?

visual-studio-2010 - 错误的网关错误 - fiddler 负载测试/visual studio 2010

visual-studio-2010 - 无法在 Visual Studio 中设置断点

visual-studio-2010 - 如何从 Visual Studio 2010 加速 Azure 部署

java - 将日期从 C# Web 方法格式化为 java android?

c# - 如何使 C# 构造函数语法更像 pythonic?

c# - 关于定时器和可变间隔的问题

c# - MySQL 字段在 LOAD DATA LOCAL INFILE 后从 VARCHAR(20) 更改为 INT