怎么获取ProcessStartInfo启动进程执行已执行完毕

如何获取ProcessStartInfo启动进程执行已执行完毕?
本帖最后由 xiaojie_cp 于 2015-05-18 18:56:02 编辑
用ffmpeg实现视频格式的自动转化,功能已经实现了,代码网上也很多。但有一个潜在问题就是,启动ffmpeg.exe的进程是后台运行的,程序本身执行完毕后(应该是调用完毕),ffmpeg.exe还在运行,然后根据视频文件的大小逐步进行文件转换。这个转换过程完全是自动的,我怎样知道ffmpeg什么时候转换完了某个文件呢?

            string flv_file = Server.MapPath(Guid.NewGuid().ToString().Replace("-", "") + ".flv");
            //建立ffmpeg进程
            System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);
            //设置后台运行,不显示窗口
            FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            //运行参数,此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg 0.4.9以上调试通过 
            //ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv  -ab 56 -ar 44100 -b 200 -r 15 -s
            FilestartInfo.Arguments = " -i " + fileName + " -ab 128 -ar 22050 -b 500 -r 15 -qscale 6 -s " + widthOfFile + "x" + heightOfFile + " " + flv_file;
            try
            {
                //开始转换
                System.Diagnostics.Process.Start(FilestartInfo);
               //这里调用开始转换,怎样知道转换完了呢?
            }
            catch
            {
                return 0;
            }

------解决思路----------------------
WaitForExit 方法。

https://msdn.microsoft.com/zh-cn/library/fb4aw7b8(v=vs.80).aspx 
------解决思路----------------------
var process = Process.Start(...);
process.WaitForExit();

参考msdn:
https://msdn.microsoft.com/en-us/library/ty0d8k56.aspx