所以我启动了一堆进程来转换一些音频文件,我希望我的主程序等到所有这些进程完成后再执行。
System.Diagnostics.Process process = new System.Diagnostics.Process();
System.Diagnostics.ProcessStartInfo stratInfo = new System.Diagnostics.ProcessStartInfo();
stratInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
DirectoryInfo di = new DirectoryInfo(@dir);
foreach (FileInfo fi in di.GetFiles())
{
stratInfo.FileName = "C:\\AudioExtract.exe";
stratInfo.Arguments = "-a \"" + dir + "\\" + fi.Name + "\"";
process.StartInfo = stratInfo;
process.Start();
}
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains("AudioExtract.exe"))
{
StatusLbl.Text = "Found!";
}
}
这就是我必须看到它是否正在运行,但我需要它继续更新getprocesses并检查它是否仍在运行并且我不太确定如何。
我的应用程序几乎同时为不同的音频文件启动许多相同的过程。我查看了注释中的链接,这将设置一个事件处理程序,每当其中一个进程退出时,我将如何处理许多相同的事件?
答案 0 :(得分:3)
在if中,尝试
pprocess.WaitForExit();
break;
http://msdn.microsoft.com/en-us/library/fb4aw7b8.aspx
该代码将等待该进程退出,然后从您的foreach中断,允许您的主程序继续运行。
答案 1 :(得分:3)
有些问题会使您的代码几乎无法使用:
编辑:
你怎么做: