有时候调用外部程序,使用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;//停止滚动