有时候调用外部程序,使用process.WaitForExit,为避免让用户傻傻的等待,也不知道等多久

于是想到在运行process.WaitForExit时,在程序界面显示一个进度条,这个进度条不是普通的

增长步长,而是到头后又从头开始,这个进度条的属性设置成Marquee,就可以让它循环滚动

但是process.WaitForExit执行时,程序界面是假死状态,进度条无任何变化。

后来搜了一下发现使用异步模式可以解决假死问题。

pb.MarqueeAnimationSpeed = 20;//设置动画的速度(单位是毫秒)
pb.Style = ProgressBarStyle.Marquee;//设置进度条样式为连续滚动

Process _proc = new Process();
ProcessStartInfo _procStartInfo = new ProcessStartInfo("可执行程序.exe", "程序参数");
_proc.StartInfo = _procStartInfo;
_proc.Start();

//为更新窗体进度条,此处将_proc.WaitForExit();改为异步
await Task.Run(new Action(() => _proc.WaitForExit()));

pb.Style = ProgressBarStyle.Blocks;//停止滚动