0

私のコードの下にあるものを見つけてください。プロセスが終了した場合に通知を受け取る方法について Stack Overflow をクロールし、以下のコードの提案を使用しました (最後の 3 行)。

    private void button1_Click(object sender, EventArgs e)
    {
        folderBrowserDialog1.ShowDialog();
        System.Diagnostics.Process process = new System.Diagnostics.Process();
        System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();            
        //startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
        startInfo.FileName = "cmd.exe";
        startInfo.Arguments = "/C rep_cmd "+textBox2.Text+" -text "+folderBrowserDialog1.SelectedPath+"\\";
        process.StartInfo = startInfo;
        System.Diagnostics.Process.Start(startInfo);
        if (process.HasExited == true)
           MessageBox.Show("Process done successfully!");            
    }

しかし、プログラムを実行すると、「このオブジェクトにプロセスが関連付けられていません」という実行時例外が発生します。これを修正する方法がわかりません。

親切に助けてください。

4

1 に答える 1

1

プロセスがその並列スレッドで終了するかどうかを確認するには、並列スレッドを生成する必要があります。次の方法でうまくいきます。プログラムをブロックしないようにするには、並列スレッドから呼び出します

    public  void  CheckProc() 
    {
        while (true)
        {
            if (process.HasExited == true)
            {
                MessageBox.Show("Process done successfully!");
                break;
            }

        }
    }

http://msdn.microsoft.com/en-us/library/system.diagnostics.process.hasexited.aspxにもアクセスして ください

于 2013-04-01T17:59:41.007 に答える