请问一下,怎么用C#判断调用的cmd程序执行完成

请教一下,如何用C#判断调用的cmd程序执行完成?
我用C#执行cmd程序,用的是如下方法:
               // 开启新进程
                Process process = new Process();
                // 打开运行cmd
                process.StartInfo.FileName = "cmd.exe";
                // 要运行的命令
                process.StartInfo.Arguments = arg;
                // 关闭shell的使用
                process.StartInfo.UseShellExecute = false;
                // 重定向标准输入
                process.StartInfo.RedirectStandardInput = true;
                process.StartInfo.RedirectStandardError = true;
                // 设置不显示cmd运行界面
                process.StartInfo.CreateNoWindow = true;

                // 启动进程
                process.Start();
cmd的程序需要执行一段时间,我该如何判断cmd程序执行完成呢?
------解决方案--------------------
process.WaitForExit();
------解决方案--------------------
也可以用线程,不停查询系统进程表
------解决方案--------------------
影响自然有

其实还有个办法,就是用回调函数,用process.WaitForExit();然后用回调函数通知主进程