Windows窗体-重复运行外部进程

本文关键字:外部 进程 运行 窗体 -重 Windows | 更新日期: 2023-09-27 17:53:38

我有一个小型Windows窗体应用程序,它需要能够无限次运行外部应用程序,而无需在每次运行后关闭该应用程序。

外部应用程序作为单个实例运行,资源非常匮乏,加载速度很慢。基本工作流程如下:

1:等待触发器加载外部应用程序2:触发,使用命令行引用打开外部应用程序3:监视日志文件3:外部应用程序处理命令行数据并写入日志文件4:日志文件已更改,因此将下一个命令行发送到(已打开(外部应用程序5:转到步骤3

我遇到的问题是,如果不首先关闭/终止进程,我就无法找到加载外部应用程序的方法。

applicationProcess.StartInfo.FileName = commandLine;
applicationProcess.Start();
// Watch for change in log file and then...
applicationProcess.StartInfo.FileName = commandLine;
applicationProcess.Start();

等等,但如果我不

applicationProcess.Kill();

在重新发出applicationProcess.Start((方法之前,我得到了一个线程异常。

我认为我需要做的是在applicationProcess启动后断开连接,但找不到任何机制。

如有任何建议/指示,我们将不胜感激。

谢谢。

Windows窗体-重复运行外部进程

如果您打算启动外部应用程序的新实例,那么只需分配一个新的Process((对象。每次启动外部应用程序时创建一个Process((对象,而不是尝试重用原始对象。

如果您打算操作外部应用程序的现有实例,即已经启动的实例,则不需要再次调用Start((,只需继续使用applicationProcess即可。

当您创建一个新的applicationProcess并将旧的保持在List或类似的东西中时,它能工作吗?

我通过创建一个批处理文件来启动应用程序,从而找到了这个问题的解决方案。工作流程如下:

1:我的应用程序使用命令行参数启动批处理文件

2:批处理文件运行重新运行主应用程序

3:我的应用程序杀死并处理了进程。

步骤3只是关闭运行批处理文件的进程,而不是主应用程序进程——我需要保持打开状态。

批处理文件再简单不过了:

@echo off
"C:'Program Files (x86)'Microsoft Office'Office14'Excel.exe" %1

我已经循环运行了一个多小时,没有发现任何问题。