我有一小段代码(易于尝试):
class Program
{
static void Main(string[] args)
{
List<string> paths = new List<string>() { "1.docx", "2.docx", "3.docx", "4.docx" };
foreach (string path in paths)
{
string path2 = @"Path\to\those\files" + path;
Process process = new Process();
process.StartInfo = new ProcessStartInfo(path2);
System.Diagnostics.Debug.WriteLine("~>" + path2);
process.Exited += (s1, e1) => process_Exited(path2);
process.EnableRaisingEvents = true;
process.Start();
}
while (true) { }
}
static void process_Exited(string path)
{//<~ breakpoint here
}
}
有时发生的情况是,在我启动应用程序后立即触发断点,尽管它必须等待一个接一个地退出进程。它始终是所有文件的最后一个文件,无论是 2 个文件、3 个文件、4 个文件还是更多文件。唯一不会过早命中断点的情况是paths
仅包含一个文件时。(顺便说一句,也许我不太关心这种奇怪的行为,但是当我真正退出 .docx 文件(路径列表中的最后一个)时,断点没有被命中。
为什么会发生这种情况(过程有时会过早退出)以及如何防止这种情况发生?
更新:我只是注意到它不一定是最后一个文件paths
,有时它是随机的。