过程经常过早退出

时间:2013-07-05 06:28:50

标签: c# process multiple-processes process-exit

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

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中的最后一个文件,有时它是随机文件。

1 个答案:

答案 0 :(得分:0)

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

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

解决了过早关闭的问题。