0

我有一小段代码(易于尝试):

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,有时它是随机的。

4

1 回答 1

0

最终,由于无法解决主要问题,我最终使用了NetOffice

NetOffice.WordApi.Application wordApp = new NetOffice.WordApi.Application();
wordApp.Visible = true;
NetOffice.WordApi.Document doc = wordApp.Documents.Open(path);

这解决了过早关闭。

于 2013-07-05T09:39:18.590 回答