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 回答