线程中webBrowser1_DocumentCompleted不执行的问题

问题描述

这是入口publicvoidrun(){WebBrowserwebBrowser1=newWebBrowser();webBrowser1.Name=Thread.CurrentThread.ManagedThreadId.ToString();webBrowser1.DocumentCompleted+=newWebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);s=generate(5);Randomr=newRandom();intia=r.Next(0,5);stringaddress=straddress[ia];//if(address!=String.Empty)//{//RefreshIESettings(address);//}try{while(ii<1){webBrowser1.Navigate("http://www.baidu.com",null,null,null);//Thread.Sleep(10000);//System.Console.WriteLine(ii.ToString()+s+webBrowser1.Name+address+webBrowser1.Url.ToString());Thread.Sleep(15000);ii+=1;}}catch(Exceptionex){System.Console.WriteLine("run:"+ex.Message);}这是winform中的代码privatevoidbutton4_Click(objectsender,EventArgse){for(inti=0;i<10;i++){Class1gooo=newClass1();System.Threading.Threads=newSystem.Threading.Thread(newSystem.Threading.ThreadStart(gooo.run));s.SetApartmentState(System.Threading.ApartmentState.STA);s.Start();}}

解决方案

解决方案二:
如果不放人子线程,代码是可以运行的,对线程很迷茫,请指点
解决方案三:
问题没有表述清楚?请指点
解决方案四:
该回复于2011-11-04 17:39:45被版主删除
解决方案五:
WebBrowserwebBrowser1=newWebBrowser();webBrowser1.Name=Thread.CurrentThread.ManagedThreadId.ToString();webBrowser1.DocumentCompleted+=newWebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);放在button4_Click里

时间: 2025-01-30 06:17:41

线程中webBrowser1_DocumentCompleted不执行的问题的相关文章

link中函数每次执行不是都需要一个堆栈么?还是按照线程分配的堆栈?

问题描述 link中函数每次执行不是都需要一个堆栈么?还是按照线程分配的堆栈? link中函数每次执行不是都需要一个堆栈么?还是按照线程分配的堆栈? 解决方案 每个线程一个堆栈,你搞错了. 每次调用函数,都在同一个堆栈上往上延伸.一个堆栈保存着从入口的那个函数到执行的那个函数的全部的上下文.

如何在普通类实例的线程过程中,同步调用执行在类实例自身所在的原来的那个线程中的方法

问题描述 如何在普通类实例的线程过程中,同步调用执行在类实例自身所在的原来的那个线程中的方法如后代码,是一个常见的实例,讲的是通过Control.Invoke在线程函数中,同步调用窗体主线程中的Form1实例的普通方法txt.但问题是,很多时候我们自己自定义的类,并不是从Control类继承的,从而也没有这个功能的Invoke方法供调用,这种类要怎么设计呢?虽然说用的示例代码是vb.net的,但严格来说,这个和语言无关,是一个.net开发的基本问题.ImportsSystemImportsSys

C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别

今天无意中看到有关Invoke和BeginInvoke的一些资料,不太清楚它们之间的区别.所以花了点时间研究了下. 据msdn中介绍,它们最大的区别就是BeginInvoke属于异步执行的. Control.Invoke 方法 (Delegate) :在拥有此控件的基础窗口句柄的线程上执行指定的委托. Control.BeginInvoke 方法 (Delegate) :在创建控件的基础句柄所在线程上异步执行指定委托.  msdn说明: 控件上的大多数方法只能从创建控件的线程调用. 如果已经创建

安卓线程中 stopSelf();和ondestroy()的区别

问题描述 安卓线程中 stopSelf();和ondestroy()的区别 在runnable分别加入ondestroy()和stopself(); 在断点中下面的代码都执行了, 但是再一次startservice(线程)的时候前者提示Thread is started异常, 后者则正常 @Override public void onDestroy(){ super.onDestroy(); ListData.interrupt(); } 解决方案 interrupt()并不会真正结束掉线程.

捕获线程中的异常

由于线程的本质特性,使得你不能捕获从线程中逃逸的异常.一旦异常逃出任务的run()方法它就会向外传播到控制台,除非你采取特殊的步骤捕获这种错误的异常.在Java SE5之前,你可以使用线程组来捕捉这种异常,但是有了Java SE5,就可以用Executor来解决这个问题了. 下面的任务总是会抛出一个异常,该异常会传播到其run()方法的外部,并且main()展示了当你运行它时所发生的事情: ? 1 2 3 4 5 6 7 8 9 10 11 12 import java.util.concurr

sleep-MFC里的线程内Sleep()不执行???

问题描述 MFC里的线程内Sleep()不执行??? void CAaaDlg::OnButton1() { // TODO: Add your control notification handler code here m_a=0; SetTimer(1,500,NULL); } void CAaaDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default Upda

JAVA线程中的生产者和消费者问题

生产者消费者问题是研究多线程时绕不开的问题,描述的是有一块生产者和消费者共享的有界缓冲区,生产者往缓冲区放入产品,消费者从缓冲区取走产品,这个过程可以无休止的执行,不能因缓冲区满生产者放不进产品而终止,也不能因缓冲区空消费者无产品可取而终止. 解决生产者消费者问题的方法有两种,一种是采用某种机制保持生产者和消费者之间的同步,一种是在生产者和消费者之间建立一个管道.前一种有较高的效率并且可控制性较好,比较常用,后一种由于管道缓冲区不易控制及被传输数据对象不易封装等原因,比较少用. 同步问题的核心在

Android 在其他线程中更新UI线程的解决方法_Android

方法一:Activity.runOnUiThread(Runnable )(经验之道: 这个最好用, 凡是要刷新页面的地方,Activity.runOnUiThread( new Runnable()  { public void run(){更新UI}}); 方法二:子线程调用Handler的sendMessage(message)发送事件. 复制代码 代码如下: mHandler = new Handler() {     @Override     public void handleMe

iOS多线程的初步研究(四、五、六)--NSTimer--NSURLConnection子线程中运行 ---- NSOperation

iOS多线程的初步研究(四)-- NSTimer 理解run loop后,才能彻底理解NSTimer的实现原理,也就是说NSTimer实际上依赖run loop实现的. 先看看NSTimer的两个常用方法: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; //生成