backgroundWorker控件多次调用问题?

我的问题是:
通过循环来调用backgroundWorker1这个控件后台执行操作,这样在上次执行 backgroundWorker1没有完成,下一次循环会提示错误,但是又不能直接跳过要执行的循环。

我想用在每次调用 backgroundWorker1 控件时都判断下他是否完成,如果完成,就调用,如果没有完成就把循环停下来,等
上次的执行结束才调用此次循环,我用如下方式如何实现(10次循环不能少)?

                    for (int i = 0; i < 10; i++)
                    {
                        if (backgroundWorker1.IsBusy)
                        {
                            这里如何写才能让此循环暂停下来,等待上次循环处理完后再调用下一次那?
                        }
                        else
                        {
                            backgroundWorker1.RunWorkerAsync();
                        }
                    }

admin -
  • admin - 1年前

    int io = al.Count;
                        int i = 0;
                        while (oi <io)
                        {
                            if (oi >= io) { break; }
                            info info = (info)al[oi];
                            if (!backgroundWorker1.IsBusy)
                            {
                                oi++;
                                backgroundWorker1.RunWorkerAsync(info);
                            }
                            else
                            {
                           
                            //你在这里Sleep(1000 * 3),界面在3秒内就会没反应的
                                //改为100ms 句感觉不出来了,也可以降低CPU的使用率
                            System.Threading.Thread.Sleep(100);
                            }
                           
                          //加上这句,界面就有反应了
                          Application.DoEvents();
                        } 

  • admin - 1年前

    LZ不要用if判断,改用while(backgroundWorker1.IsBusy)