如何实现webbrowser中navigate线程同步

问题描述

如何实现在WebBrowser上实现逐个URL的访问,访问完前一个后再访问后一个?下面代码,在第一个,第二个没有访问完时,就访问到第三个了,最终也只得到了最后一个URL指向的内容。另外,若用Application.DoEvents来完成等待的话,如何实现终止Application.DoEvents而不退出主窗体?string[]UrlArray=newstring[]{"http://www.sina.com.cn","http://www.163.com","http://www.sohu.com"};WebBrowserwb1=newWebBrowser();for(inti=0;i<UrlArray.Length;i++){wb1.Navigate(UrlArray[i]);}

解决方案

本帖最后由 xeonfeng 于 2012-03-28 11:54:24 编辑
解决方案二:
你这样做是不行的,必须接力才行。我吧过程说一下:0,定义要访问的数组,和当前的访问指针currentIndex(全局);1,首先注册处理wb1的documentcomplete事件2,documentcomplete事件处理中,先判断当前访问到第几个了(currentIndex),然后调用wb1.Navigate(UrlArray[currentIndex++]);3,然后你只用启动第一个的访问就行了wb1.Navigate(UrlArray[0]);
解决方案三:
该回复于2012-03-28 14:00:37被版主删除
解决方案四:
可以创建互斥,documentcomplete中解除互斥
解决方案五:
1楼的方法可以用
解决方案六:
有没有朋友写好的异步的例子?
解决方案七:
该回复于2012-03-29 15:42:23被版主删除
解决方案八:
该回复于2012-03-29 16:07:50被版主删除
解决方案九:
如果你想抓取网络内容,而不是模仿浏览器展示的话,用HttpWebRequest更轻量级一点。
解决方案十:
该回复于2012-03-29 17:52:13被版主删除
解决方案十一:
VBVBVB
解决方案十二:
代码好像没问题
解决方案十三:
写这个代码需要懂什么。?
解决方案十四:
不知道你想干什么?
解决方案十五:
inturlIndex=0;string[]UrlArray=newstring[]{"http://www.sina.com.cn","http://www.163.com","http://www.sohu.com"};WebBrowserwb1=newWebBrowser();wb1.DocumentCompleted+=newWebBrowserDocumentCompletedEventHandler(webbrowser_DocumentCompleted);wb1.Navigate(UrlArray[urlIndex]);voidwebbrowser_DocumentCompleted(objectsender,WebBrowserDocumentCompletedEventArgse){//处理urlInex++;if(urlIndex<UrlArray.Length){wb1.Navigate(UrlArray[urlIndex]);}else{MessageBox.Show("完成");}}

解决方案:
vbvbbvbvb
解决方案:
该回复于2012-03-30 08:40:19被版主删除
解决方案:
该回复于2012-03-30 08:40:20被版主删除
解决方案:
想要模拟HTTP请求?!否则,你要实现这样的功能做什么?这样的写法,好无意义?
解决方案:
该回复于2012-03-30 09:16:14被版主删除
解决方案:
该回复于2012-03-30 09:14:43被版主删除
解决方案:
该回复于2012-04-05 13:44:52被版主删除
解决方案:
因为有很多cookie需要处理,所以偷懒了一下,没有用HttpWebRequest!继续,看看有没有写好的异步并顺序请求多个URL!
解决方案:
因为有很多cookie需要处理,所以偷懒了一下,没有用HttpWebRequest!继续,看看有没有写好的异步并顺序请求多个URL!
解决方案:
引用14楼的回复:

C#codeinturlIndex=0;string[]UrlArray=newstring[]{"http://www.sina.com.cn","http://www.163.com","http://www.sohu.com"};WebBrowserwb1=newWebBrowser();wb1.DocumentCompleted+=n……

good...
解决方案:
该回复于2012-03-30 14:43:45被版主删除
解决方案:
该回复于2012-04-15 11:46:42被版主删除
解决方案:
该回复于2012-03-31 09:55:35被版主删除
解决方案:
写这个代码需要懂什么。?
解决方案:
哈哈,我又来了。谢了哈
解决方案:
该回复于2012-03-31 16:34:14被版主删除
解决方案:
学到一招
解决方案:
1楼的方法可以用1楼的方法可以用
解决方案:
该回复于2012-04-02 16:16:25被版主删除
解决方案:
这不要用什么同步,反而性能不佳14L的处理方式可以
解决方案:
该回复于2012-04-02 16:20:45被版主删除
解决方案:
1楼的方法可以用
解决方案:
好文章啊。好掉线了
解决方案:
1楼的方法确实可以用
解决方案:
该回复于2012-04-05 10:34:08被版主删除
解决方案:
该回复于2012-04-05 10:34:08被版主删除
解决方案:
string[]UrlArray=newstring[]{"http://www.sina.com.cn","http://www.163.com","http://www.sohu.com"};WebBrowserwb1=newWebBrowser();for(inti=0;i<UrlArray.Length;i++){wb1.Navigate(UrlArray[i]);while(wb1.IsBusy)Application.DoEvents();}

解决方案:
该回复于2012-04-05 08:32:21被版主删除
解决方案:
该回复于2012-04-05 08:32:21被版主删除
解决方案:
可以用定时器也可以用1楼的方法哈哈
解决方案:
该回复于2012-04-05 09:10:54被版主删除
解决方案:
用DocumentCompleted事件来捕获是否已经访问完成一个网页
解决方案:
该回复于2012-04-05 13:11:14被版主删除
解决方案:
该回复于2012-04-05 13:52:19被版主删除
解决方案:
webbrowser1.navgate('www.abc.com');Application.DoEvents();给我分吧,谢谢
解决方案:
好文章啊

时间: 2024-09-20 05:28:17

如何实现webbrowser中navigate线程同步的相关文章

synchronized-问java中关于线程同步的问题

问题描述 问java中关于线程同步的问题 public class TT implements Runnable { int b = 100; public synchronized void m1() throws Exception { b = 1000; Thread.sleep(2500); System.out.println("b = " + b); } public synchronized void m2() throws Exception { Thread.slee

关于java 中的线程同步问题,求大神解释。

问题描述 关于java 中的线程同步问题,求大神解释. 对于一个已经继承了Runnable 接口的类来说,假设创建了一个它的实例为 account, 那么: for(int i=0;i<500;i++) { new Thread(account).start(); } 不会造成500个线程同步访问同一资源而引发冲突? 为什么: private ExecutorService executor = Executors.newCachedThreadPool(); //在线程池中为每个等待的任务创建

Java多线程编程中synchronized线程同步的教程_java

0.关于线程同步 (1)为什么需要同步多线程?线程的同步是指让多个运行的线程在一起良好地协作,达到让多线程按要求合理地占用释放资源.我们采用Java中的同步代码块和同步方法达到这样的目的.比如这样的解决多线程无固定序执行的问题: public class TwoThreadTest { public static void main(String[] args) { Thread th1= new MyThread1(); Thread th2= new MyThread2(); th1.sta

Java中的线程同步与ThreadLocal无锁化线程封闭实现_java

Synchronized关键字 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行.另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 然而,当一个线程访问object的一个synchronized(this)同步代码块时,另一个线程仍然可以访问该object中的非synchronized(

C#中实现线程同步lock关键字的用法详解_C#教程

1. lock关键字保证一个代码块在执行的过程中不会受到其他线程的干扰,这是通过在该代码块的运行过程中对特定的对象加互斥锁来实现的. 2. lock关键字的参数必须是引用类型的对象.lock对基本数据类型如int,long等无效,因为它所作用的类型必须是对象.如果传入long类型数据,势必被转换为Int64结构类型,则加锁的是全新的对象引用.如果需要对它们进行互斥访问限制,可以使用System.Threading.Interlocked类提供的方法,这个类是提供原子操作的. 3. lock(th

Java 线程同步 synchronized

先来看一个不带线程同步的例子,这个例子很简单,只是让两个线程输出同样的内容,并不做其他的事, 所以,线程同步在这里体现的并不明显. import java.util.Date; public class ThreadTest extends Thread{ int pauseTime; String name; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method s

java中的线程

编写具有多线程能力的程序经常会用到的方法有: run(),start(),wait(),notify(),notifyAll(),sleep(),yield(),join() 还有一个重要的关键字:synchronized 本文将对以上内容进行讲解. 一:run()和start() 示例1: public class threadtest extends thread{public void run(){for(int i=0;i<10;i++){system.out.print(" &q

C#并行编程-线程同步原语

原文:C#并行编程-线程同步原语 菜鸟学习并行编程,参考<C#并行编程高级教程.PDF>,如有错误,欢迎指正. 背景 有时候必须访问变量.实例.方法.属性或者结构体,而这些并没有准备好用于并发访问,或者有时候需要执行部分代码,而这些代码必须单独运行,这是不得不通过将任务分解的方式让它们独立运行. 当任务和线程要访问共享的数据和资源的时候,您必须添加显示的同步,或者使用原子操作或锁. 之前的.NET Framework提供了昂贵的锁机制以及遗留的多线程模型,新的数据结构允许细粒度的并发和并行化,

Java线程同步实例分析_java

本文实例讲述了Java线程同步的用法.分享给大家供大家参考.具体分析如下: 多线程的使用为我们的程序提供了众多的方便,同时它也给我们带来了以往没有考虑过的麻烦.当我们使用多线程处理共享资源时意外将会发生:比如我们一起外出就餐,每个人都是一个线程,餐桌上的食物则是共享资源,当我看到红烧鸡腿上桌后立即拿起筷子直奔目标,眼看着就得手的时候,突然---鸡腿消失了,一个距离盘子更近的线程正在得意地啃着. 为了避免上述问题的发生,Java为我们提供了"synchronized(同步化)修饰符"来避