我想打电话用简单的代码的应用程序一样进程退出,但实际上不完全
public void Run(string command)
{
Process proc = new Process();
proc.StartInfo.FileName = "acvTemp.exe";
proc.StartInfo.Arguments = command;
proc.Start();
proc.WaitForExit();
}
,文件名过程中,我居然推出产生一个新的窗口。它的一些命令使它无法退出。即
command = acvtest.exe /launch /wait /log:<temp.log>
所以acvtest.exe启动机器上运行,并且实际上仍在运行,所以我可以运行像
acvtest.exe /getid:<name>
其他命令这是我将如何手动使用应用程序。
acvtest.exe /launch /wait /log:<temp.log>
acvtest.exe /getid:<name>
注意实际/启动过程返回shell命令提示符,因为/启动打开一个新的命令窗口和/的getId的输出实际写入日志。
我的问题是,当第一个/ launch或/ getid命令运行时,即使在日志上释放句柄之前,waitforexit()似乎正在退出。 (可能在某些孩子出口之前?)
也就是说,下面的命令会失败,直到我进入睡眠状态或在两者之间等待。即使waitforexit()
Run("/launch /wait /log:<temp.log>");
Run("/getid:<name>");
Run("shutdown");
//Needs some sleep or wait here
using (StreamReader reader = new StreamReader("temp.log"))
{
Console.WriteLine(reader.ReadToEnd());
}
在没有任何睡眠或上述两个部分之间等待,访问日志失败,错误,它已被另一个进程。看起来应用程序在实际完成其进程之前即将退出。这是应用程序的问题吗?我能做些什么来解决它?
我怀疑我可能需要一些不同的Run()代码,因为启动了一个新的shell。
[更新]
问题不仅在于日志文件。当我运行Run(“/ getid:”)时,假设有大约100,000个文件名,其中很多文件名会因'资源不可用'错误而失败,这就是为什么我认为应用程序可能在其释放资源之前退出 谢谢寻找。
做一个循环,尝试之间等待。 – Dialecticus
我在问题结尾添加了更新。谢谢。 – user393148