我有一小段代码(易于尝试):
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
中的最后一个文件,有时它是随机文件。
答案 0 :(得分:0)
最终,无法解决主要问题,我最终使用NetOffice:
NetOffice.WordApi.Application wordApp = new NetOffice.WordApi.Application();
wordApp.Visible = true;
NetOffice.WordApi.Document doc = wordApp.Documents.Open(path);
解决了过早关闭的问题。