写了一个调用winrar将文件夹打压缩包的代码:
/// <summary>
        /// 打包成RAR
        /// </summary>
        /// <param name="strSource">路径</param>
        /// <param name="rarName">压缩包名</param>
        /// <param name="strPass">pass</param>
        /// <returns>1正常2不正常-1失败</returns>
        public int CompressRAR(string strSource, string rarName, string strPass)
        {
            int iReturn = -1;
            if (Exists())
            {
                //int iPid = CustomFun.InstanceOper.SearchProcessID("winrar", true);                Process processWinRar = new System.Diagnostics.Process();
                processWinRar.StartInfo.FileName = "Winrar.exe";
                processWinRar.StartInfo.CreateNoWindow = true;
                processWinRar.StartInfo.Arguments = string.Format(" a  -p{0} {1} -r -ibck -EP1 {2}", strPass, rarName, strSource);                processWinRar.Start();
                while (processWinRar.HasExited)//问题在这里
                {
                    int iExitCode = processWinRar.ExitCode;
                    if (iExitCode == 0)
                    {
                        iReturn = 1;
                    }
                    else
                    {
                        iReturn = 2;
                    }
                }
            }
            else
            {
                iReturn = -1;
            }
            return iReturn;
        }问题:进程执行后,压缩文件夹需要一定的时间,于是while (processWinRar.HasExited)这里获取的值就是false,该方法返回的值也就是-1。
求教:如何等待该进程的返回值为真时再向下执行呢?目前能想到的就是thread.sleep(xxx),但是不方便。谢谢了