C# Windows窗体-重复运行外部进程
我有一个小的Windows窗体应用程序,它需要能够无限次地运行外部应用程序,而无需在每次运行后关闭该应用程序 外部应用程序作为单个实例运行,非常消耗资源,加载速度也很慢。基本工作流程如下: 1:等待触发器加载外部应用程序 2:触发,使用命令行引用打开外部应用程序 3:监视日志文件 3:外部应用程序处理命令行数据并写入日志文件 4:日志文件已更改,因此将下一个命令行发送到(已打开)外部应用程序 5:转至步骤3 我遇到的问题是,如果不先关闭/终止进程,我无法找到加载外部应用程序的方法C# Windows窗体-重复运行外部进程,c#,winforms,C#,Winforms,我有一个小的Windows窗体应用程序,它需要能够无限次地运行外部应用程序,而无需在每次运行后关闭该应用程序 外部应用程序作为单个实例运行,非常消耗资源,加载速度也很慢。基本工作流程如下: 1:等待触发器加载外部应用程序 2:触发,使用命令行引用打开外部应用程序 3:监视日志文件 3:外部应用程序处理命令行数据并写入日志文件 4:日志文件已更改,因此将下一个命令行发送到(已打开)外部应用程序 5:转至步骤3 我遇到的问题是,如果不先关闭/终止进程,我无法找到加载外部应用程序的方法 applica
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启动后断开与它的连接,但找不到任何机制来实现这一点
如有任何建议/指示,将不胜感激
谢谢。如果要启动外部应用程序的新实例,只需分配一个新的Process()对象即可。每次启动外部应用程序时创建一个Process()对象,而不是尝试重复使用原始对象
如果您打算操作已启动的外部应用程序的现有实例,则无需再次调用Start(),只需继续使用applicationProcess。如果您打算启动外部应用程序的新实例,则只需分配一个新的Process()对象。每次启动外部应用程序时创建一个Process()对象,而不是尝试重复使用原始对象
如果您打算操作已启动的外部应用程序的现有实例,则无需再次调用Start(),继续使用applicationProcess。当您创建一个新的
应用程序流程,并将旧的流程保留在列表或类似的东西中时,它是否起作用?当您创建一个新的应用程序流程,并将旧的流程保留在列表或类似的东西中时,它是否起作用?我通过创建批处理文件将启动应用程序。工作流程如下:
1:我的应用程序使用命令行参数启动批处理文件
2:批处理文件运行重新运行主应用程序
3:我的应用程序终止并处理流程
applicationProcess.StartInfo.FileName = commandLine;
applicationProcess.Start();
// Watch for change in log file and then...
applicationProcess.StartInfo.FileName = commandLine;
applicationProcess.Start();
步骤3只是关闭运行批处理文件的进程,而不是主应用程序进程,我需要保持打开状态
批处理文件非常简单:
@echo off
"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" %1
我在循环中运行了一个多小时,没有发现任何问题。我通过创建批处理文件启动应用程序,找到了解决此问题的方法。工作流程如下:
1:我的应用程序使用命令行参数启动批处理文件
2:批处理文件运行重新运行主应用程序
3:我的应用程序终止并处理流程
applicationProcess.StartInfo.FileName = commandLine;
applicationProcess.Start();
// Watch for change in log file and then...
applicationProcess.StartInfo.FileName = commandLine;
applicationProcess.Start();
步骤3只是关闭运行批处理文件的进程,而不是主应用程序进程,我需要保持打开状态
批处理文件非常简单:
@echo off
"C:\Program Files (x86)\Microsoft Office\Office14\Excel.exe" %1
我在一个循环中运行了一个多小时,没有发现任何问题。是的,如果我为每次调用创建一个新的ProcessObject,它看起来确实可以工作,但是我担心在运行的应用程序中添加无限数量的process object,因为我认为这会消耗内存/资源,即使目标应用程序仍然是单个实例。是的,但是对于这种重复运行大型应用程序的设计来说,这不是一个固有的问题吗?也许你应该重新考虑一下整个概念。@Neilski,你可以不时地浏览列表,并处置()任何不再使用的进程对象。是的,如果我为每个调用创建一个新的ProcessObject,它看起来确实有效,然而,我担心在运行的应用程序中添加数量不限的进程对象,因为我认为即使目标应用程序仍然是一个实例,这些进程对象也会消耗内存/资源。是的,但对于这种重复运行大型应用程序的设计来说,这不是一个固有的问题吗?也许你应该仔细考虑一下整个概念。@Neilski,你总是可以不时地浏览列表,然后处置()任何不再使用的进程对象。