我希望我的程序可以等待所有的进程结束后再删除一些临时文件。我已经有了一段代码可以在处理一个进程时完成这个任务,但是无法处理多个进程。
下面先展示可以运行一个进程、等待其结束并删除临时文件的代码:
以上内容都包含在
下面先展示可以运行一个进程、等待其结束并删除临时文件的代码:
foreach (string script in scriptList)
{
ProcessStartInfo myProcess = new ProcessStartInfo();
myProcess.FileName = accoreconsolePath;
myProcess.Arguments = "/s \"" + script + "\"";
myProcess.CreateNoWindow = true;
Process myWait = Process.Start(myProcess);
myWait.WaitForExit();
File.Delete(script);
}
以上内容都包含在
foreach
循环中。我无法让一个并行的版本按照预期工作,其中等待语句在foreach循环之外: Process myWait;
foreach (string script in scriptList)
{
ProcessStartInfo myProcess = new ProcessStartInfo();
myProcess.FileName = accoreconsolePath;
myProcess.Arguments = "/s \"" + script + "\"";
myProcess.CreateNoWindow = true;
myWait = Process.Start(myProcess);
}
myWait.WaitForExit(); //error: use of unassigned local variable "myWait"
//delete file would go here
我认为我只需要在进入foreach
循环之前初始化myWait
,但我不知道如何做。如何初始化一个进程而不将其分配给任何东西?还有其他简单的方法吗?
List<Process> myWait = new List<Process>();
- Hans Passant