0

コマンドラインを実行し、以下のようにいくつかのことを行うコードがあります。

        ProcessStartInfo psi = new ProcessStartInfo();
        psi.FileName = "CMD.EXE";
        System.Console.WriteLine("please insert the path of working directory");
        string path = System.Console.ReadLine();
        psi.WorkingDirectory = path; //@"D:\Exercises\npp52\scintilla\src";
        psi.Arguments = "/C dir /s /b | cccc - --outdir=d:\\jon";
        psi.WindowStyle = ProcessWindowStyle.Normal;
        Process.Start(psi);
        // ... cut ...
        XmlTextReader reader = new XmlTextReader(@"D:\jon\anonymous.xml");
        while (reader.Read()) 
        {
            switch (reader.NodeType) { /* ... */ }
        }

2 番目のピースは、最初のピースが終了するまで待たずに開始します。特に、最初のピースが anonimous.xml を生成する前に、2 番目のピースがその xml を取得しようとします。

4

1 に答える 1

3

この行を追加すると:

Process.Start(psi);
psi.WaitForExit(); // <-- add this

コードは、プロセスが終了するまで待機する必要があります。

于 2012-12-13T08:50:05.620 に答える