问题描述
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裏面的代碼完成了,再玩下執行