c#中,如何实现for循环根据条件暂停执行:即在每一次循环的过程中都要去处理另一个需要几十秒时间的程序,在这个程序完成后返回并再继续f
发布时间:2011-06-23 14:39:48 文章来源:www.iduyao.cn 采编人员:星星草
c#中,怎么实现for循环根据条件暂停执行:即在每一次循环的过程中都要去处理另一个需要几十秒时间的程序,在这个程序完成后返回并再继续f
程序的情况:
在winform程序中有一个窗口,在这个窗口中放置了两个webbrowser控件(wbList,wbDetail),左边的用来显示一个web的List列表页面,而在右边显示在List页面加载成功后再分别自动显示列表中每一条记录的Detail详细页面(需要的数据在这里处理).
遇到的问题:
现在遇到的问题是,在左边的List页面加载完成后,我在它的DocumentCompleted事件时来循环显示Detail页面,调用的代码是wbDetail.Navigate(strURI);(这个操作比较耗时,估计得有十秒钟左右的),然而在用for循环时分别显示Detail的页面时,由于for循环它就不能停下来,一下子就把循环执行完了,而在每次循环过程中显示需要耗时Detail页面,除了最后一个能正常显示外其它的都不能正常显示!
需要的处理办法:
我想到过控制线程,尽可能使这在每一次循环过程中执行wbDetail.Navigate(strURI);时让for循环暂停执行,待wbDetail.Navigate(strURI);执行完成后再继续for循环!但是这个怎么来实现呢?怎么来控件这两个webbrowser控件按照我所设想的顺序来执行的呢?
除了线程,还有锁等控件代码块操作的方法都可以的,thank:)
------解决方案--------------------
每次启动一个Thread来执行任务,然后通过Thread.Join等待任务执行完毕。
------解决方案--------------------
先引用
using System.Threading;
在代码中需要暂停语句前写
Thread.Sleep(3000);//3000毫秒,多少自己设
------解决方案--------------------
可以使用Event。在WebBrowser.Navigate函数调用后,等待事件消息。在WebBrowser.Navigated事件接收函数中,设置Event。这样的话,for循环就被阻止了。
------解决方案--------------------
搞定了没?
实在不行就用多线程试试看。
单独开一个线程。
private Thread poThread;
private void button1_Click(object sender, EventArgs e)
{
poThread = new Thread(new ThreadStart(myThread));
poThread.IsBackground = true;
poThread.Start();
}
private void myThread()
{
for (int i = 0; i < 10; i++)
{
webBrowser1.Navigate( "http://www.csdn.net ");
Thread.Sleep();
}
}
//在
private void wbDetail_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
poThread.Resume();
}
------解决方案--------------------
参考这里
http://blog.csdn.net/hertcloud/archive/2007/04/07/1556112.aspx
使用多线程 用
将你要执行的部分 写成函数 然后使用 事件委托的模式
while(true){//事件调用.... //Thread.Sleep(10000) 每10秒执行一次}
参考上面地址.
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
c# 类库打包成COM类型库时在vs命令行怎么写
类库打包成COM类型库(在vs命令行中怎么写啊)
路径和格式怎么写?
假如路径是:F:\netTest...
-
int
c#里的int是多少位???????
------解决方案--------------------
int 的值用 31 位来表示,第三十二位为符号位。,其范围从负 2,147,483...
-
求各位大侠帮个忙
做的是一个项目经理评分系统
如何把第一个窗体点击的人的信息显示到第二个窗体里面
------解决方案---------...
-
【asp.net三层怎样入手学习开发?】
我现在搞asp.net都是面向过程的.没有分层
请问怎样做到 mvc ??真正的面向对象的开发??
请问...
-
.net framework 2.0 service pack 1 无法卸载,怎么办
总是提示说安装是发生严重错误,并且说it will affect other application that...
-
Message.Show()的窗体美化
每次弹出的窗口都是那么的单调有没有什么方法能换一下弹出窗体的颜色或者是插一张图片
------解决方...
-
安装vs2010出错,求老师解答!!!
rt
安装vs2010是出错
C:\Users\Administrator\AppData\Local\Temp\SIT32027.tmp\deffactory...
-
怎么做一个转盘出来啊,请教各位大虾
在ASP.NET的页面中怎么弄一个转盘出来啊?
------解决方案--------------------
什么转盘
---...
-
jquery each遍历赋值不上呢
<ul id="myul">
<li><a id="2258">第一个</a></li>
<li><a id="2258">第二个</a></li>
<li>...
-
C#发布问题
这个是怎么回事啊
我在那个debug下面有那个DevExpress.XtraLayout.v9.1.dll这个了 为什么还是报这个错
------解决...