我的问题是:
通过循环来调用backgroundWorker1这个控件后台执行操作,这样在上次执行 backgroundWorker1没有完成,下一次循环会提示错误,但是又不能直接跳过要执行的循环。我想用在每次调用 backgroundWorker1 控件时都判断下他是否完成,如果完成,就调用,如果没有完成就把循环停下来,等
上次的执行结束才调用此次循环,我用如下方式如何实现(10次循环不能少)?for (int i = 0; i < 10; i++)
{
if (backgroundWorker1.IsBusy)
{
这里如何写才能让此循环暂停下来,等待上次循环处理完后再调用下一次那?
}
else
{
backgroundWorker1.RunWorkerAsync();
}
}
通过循环来调用backgroundWorker1这个控件后台执行操作,这样在上次执行 backgroundWorker1没有完成,下一次循环会提示错误,但是又不能直接跳过要执行的循环。我想用在每次调用 backgroundWorker1 控件时都判断下他是否完成,如果完成,就调用,如果没有完成就把循环停下来,等
上次的执行结束才调用此次循环,我用如下方式如何实现(10次循环不能少)?for (int i = 0; i < 10; i++)
{
if (backgroundWorker1.IsBusy)
{
这里如何写才能让此循环暂停下来,等待上次循环处理完后再调用下一次那?
}
else
{
backgroundWorker1.RunWorkerAsync();
}
}
解决方案 »
- 电脑上开始装的VS2010自从安装了SQL2008后就出问题了,大神们帮帮忙啊
- DataSet.update的问题,请高手解答【高分】
- 一小段代码问题
- post数据问题
- 求C#UDP和TCP穿透以及传文件分包重组过程
- 写进文件的内容为什么会有空格?
- 不能用代码访问SQL 2000 sever报错
- 正则表达式不是以^开始,以$结束么,为什么很多人写的脚本里面都要放在//里面,都像这样/^..............$/
- 请问在.net的winform里能实现这样的datagrid的效果吗?
- 微软IE控件(SHDOCVW.DLL)常用属性怎样应用,特别是后边几个的带参数我不理解,大家帮忙,先谢谢了
- 正则表达式怎么匹配以下这个字符串
- 如何进行TCP/IP编程?(C#语言)
int io = al.Count;
int oi = 0;
while (oi<io)
{
if (oi >= io) { break; }
info info = (info)al[oi];
if (!backgroundWorker1.IsBusy)
{
oi++;
backgroundWorker1.RunWorkerAsync(info);
}
else
{ System.Threading.Thread.Sleep(1000 * 3); }
}
这样会产生“程序没有反应”的问题。
int oi = 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();
}