关于Webbrowser的线程问题

问题描述

Webbrowserws=newWebbrowser();ws.Navigate("[URL]");ws.DocumentComplet+=(sender,e)=>{代码区域};System.Thead.Sleep(1000);

我想知道Navigate这个方法是同步的还是异步的,还有代码区内的是运行在主线程还是Webbrowser新开了一个线程,Sleep方法是否阻塞了《代码区域》因为我想知道怎么样才能在运行完<代码区域>后执行Sleep()方法,如果这是一个命令窗口,就会直接退出请各位指教

解决方案

解决方案二:
异步方法
解决方案三:
引用1楼wangnaisheng的回复:

异步方法

既然是异步,那就是说如果调用Sleep方法,代码区域中的代码还是继续执行下去的,但是我做过试验,调用了Sleep()方法后,代码区域也被阻塞,请教是为什么?
解决方案四:
引用2楼g767160的回复:

Quote: 引用1楼wangnaisheng的回复:
异步方法

既然是异步,那就是说如果调用Sleep方法,代码区域中的代码还是继续执行下去的,但是我做过试验,调用了Sleep()方法后,代码区域也被阻塞,请教是为什么?

是异步调用,但不是多线程,主线程阻塞时,代码也会被阻塞
解决方案五:
是异步调用你用当前线程去调用他接着把当前线程给阻塞了那么代码区域里面的也会被阻塞。
解决方案六:
引用3楼lzp_lrp的回复:

Quote: 引用2楼g767160的回复:
Quote: 引用1楼wangnaisheng的回复:
异步方法

既然是异步,那就是说如果调用Sleep方法,代码区域中的代码还是继续执行下去的,但是我做过试验,调用了Sleep()方法后,代码区域也被阻塞,请教是为什么?

是异步调用,但不是多线程,主线程阻塞时,代码也会被阻塞

那对于这个例子,有什么办法等到代码区域的代码运行完了,才继续往下执行?
解决方案七:
不是已经订阅了事件ws.DocumentComplet么你在事件里写后续的代码啊.这里订阅的事件就不要写成匿名函数了.
解决方案八:
引用6楼Z65443344的回复:

不是已经订阅了事件ws.DocumentComplet么你在事件里写后续的代码啊.这里订阅的事件就不要写成匿名函数了.

你可能還沒理解我的意思,我的意思是如果我是一個控制臺命令程序,如果直接寫到DocumentComplet裏面去,DocumentComplet裏面的是異步的,就是說不會等到DocumentComplet代碼完成,程序就直接退出了,我想要的效果是,要等到DocumentComplet裏面的代碼完成了,再玩下執行

时间: 2024-08-04 10:12:00

关于Webbrowser的线程问题的相关文章

webbrowser 如何在Newwindow2里使用新线程打开

问题描述 webbrowser 如何在Newwindow2里使用新线程打开 如果窗口是同一线程创建就正常,另一线程就会出现错误CHtmlDlg hd = new CHtmlDlg;CWnd wnd;wnd.Attach(handles.hWndMain);hd->Create(IDD_HTML_DIALOG &wnd);wnd.Detach();chts.Add(NULL);hwnds.Add(hd->m_hWnd);hd->m_pBrowserApp->get_Appli

c# 在线程中访问webBrowser元素抛出&amp;amp;#39;指定的转换无效&amp;amp;#39;异常

问题描述 c# 在线程中访问webBrowser元素抛出'指定的转换无效'异常 在网上搜了很多, 都说是可以用委托将函数放在主线程调用 结果也是可以了. 但是这种方法就失去了线程的防假死功能 就等于又是一个线程在运作了(或者可以说变成了一个伪线程) 不能循环的访问webBrowser元素了,不然就出现假死状态 有没有办法可以 既能够在线程中访问webBrowser元素 又可以循环访问而不假死呢? 弄了一天了,求高手解答. public Form1() { InitializeComponent(

如何实现webbrowser中navigate线程同步

问题描述 如何实现在WebBrowser上实现逐个URL的访问,访问完前一个后再访问后一个?下面代码,在第一个,第二个没有访问完时,就访问到第三个了,最终也只得到了最后一个URL指向的内容.另外,若用Application.DoEvents来完成等待的话,如何实现终止Application.DoEvents而不退出主窗体?string[]UrlArray=newstring[]{"http://www.sina.com.cn","http://www.163.com"

eb rower-在使用JWebBrower 生成图片时,一次生成很多个,线程问题!

问题描述 在使用JWebBrower 生成图片时,一次生成很多个,线程问题! 在使用JWebBrower 生成图片时,一次生成很多个,非常耗时,同时第一次根据前台调用生成图片,一直没有返回消息,debug一次发现方法一直停留在NativeInterface.runEventPump();处.求大神给解答下,不胜感激! public static void takeSnapshot2(final List<Map<String,String>> xllist,final List&l

WebBrowser让DocumentCompleted事件执行完毕后再往下执行

Q:WebBrowser如何让DocumentCompleted事件执行完毕后再往下执行? A:使用信号量,等待一下 System.Threading.AutoResetEvent obj = new System.Threading.AutoResetEvent(false); void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) ...{ obj.Set(); } p

获取input表签的值-在webbrowser控件中获取文本框的值

问题描述 在webbrowser控件中获取文本框的值 复制授权码 请问高手们怎么才能获取到input标签的值呢 相关文章 javaweb-value为空,如何获取文本框的值? javascript-在js中 如何用Jquery 获取一个文本框中的值 文本框中ID=A js文本框-js获取文本框的值,有默认值 javascript-如何获取HTML网页密码输入框的值? jquery怎么让循环的两个文本框的值相加 servlet-想通过href链接传递文本框的值,该怎么得到文本框的值 textbox

c#如何通过子线程控制主线程控件呢?

问题描述 c#如何通过子线程控制主线程控件呢? 我主窗口有个webbrowser控件,想通过子线程点击已显示出来的网页实现填写的功能,要怎么实现呢?我直接写代码会出错: 求大神贴点代码! 我用主线程弄个按钮是可以点击的,就是子线程不行 错误信息: "System.InvalidCastException"类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 指定的转换无效. 线程代码 HtmlElement ht = webBrowser1.Do

编码-C#中线程里调用winform上的控件,问题。求助。

问题描述 C#中线程里调用winform上的控件,问题.求助. 废话不多说,我直接贴代码了.程序很简单.我摘抄的网上的. 上图是个界面. 然后程序里先是一个类.如下: class ClientThread { Encoding encoding = Encoding.GetEncoding("GB2312"); private Socket client; public string data = null; private byte[] receiveBytes = new byte

c# 多线程 多线程-C# 多线程 webbrowser 调用不显示

问题描述 C# 多线程 webbrowser 调用不显示 private void OnCalc(LatLng val) { m_position = val; Object[] list = { this System.EventArgs.Empty }; //this.label1.BeginInvoke(new EventHandler(lableClick) list); this.webBrowser1.BeginInvoke(new EventHandler(webBrowser1s