conan705 2015-04-02 00:53 采纳率: 0%
浏览 6519

C# winform 执行主程序 页面假死 假死,进度条无法显示

现有一个程序,winform。在主页面中有一个button,button触发调用外部一个bat file
bat file执行完会将结果反馈到主页面的UI上。我希望在bat 运行期间,有一个进度条显示。
但是由于我button中调用的bat file是用process 调用的。所以UI假死,导致进度条无法加载。
Process process = new Process();
process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = strbatPath.ToString();
process.Start();
process.WaitForExit();
string returnValue = process.ExitCode.ToString();
if (process.HasExited)
{
//MessageBox.Show(process.ExitCode.ToString());
if (returnValue.Equals("0"))
{

                    process.Close();
                    //this.backgroundWorker1.CancelAsync();
                    this.TC1.Enabled = true;
                    ReadResult();
                }
                else
                {

                }

在网上查了很多,都说用多线程操作。但是我不理解。于是产生了下面的疑问
1.除了process 调用bat, 还有thread来调用的方法吗?因为起了一个thread调用进度条,那么就必须有另外一个thread来调用bat,对吗?
2.能给出一个伪代码来实现我上述的要求吗?有点搞糊涂了

  • 写回答

3条回答

  • lhl_lqc 2015-04-02 02:07
    关注

    可以使用BackgroundWorker异步进行。点击button的时候启动BackgroundWorker的RunWorkerAsync方法。BackgroundWorker的第一个参数是你要执行的process的方法,第二个参数是处理进度条的方法,第三个参数是执行完成的方法。

    BackgroundWorker b = new BackgroundWorker();

            b.DoWork += new DoWorkEventHandler(dowork);
                                  b.ProgressChanged += new ProgressChangedEventHandler(process);
            b.RunWorkerCompleted += new RunWorkerCompletedEventHandler(complete);
            b.WorkerReportsProgress = true;
    
                        b.RunWorkerAsync(args);
    
                        将bat file的处理方法放在dowork里,process是进度条的处理方法,complete是结束时操作的方法。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题