问题描述
是这样的,我在程序中循环使用了HttpWebRequest来抓取不同网页的内容,然后处理,把结果用javascript填充到不同的DIV中,就是抓完了第一个,填出第一个,在抓第二个,填充第二个。。。如果在这个循环的过程中,用window.open打开一个aspx页面,就会出现先打开一个白的窗口,然后等到那个循环结束的时候这个aspx页面才开始加载,我怎么能够让这个页面立即加载,或者让那个进程马上结束,然后打开这个aspx页面。
解决方案
解决方案二:
sf
解决方案三:
用线程实现。在循环中为每一个HttpWebRequest创建一个线程,让他们自已抓取,并填充到DIV中。
解决方案四:
应该没办法,主进程运行完才会呈现页面.要不不是跟C/S一样啦,我也头疼这个
解决方案五:
用ajax来控制???
解决方案六:
那个循环用的就是ajax
解决方案七:
如果在循环的时候,我window.open的是一个“html”页面,那么页面会很快加载,但是如果是aspx页面,那就必须等待夫窗口的循环执行完了,才加载。如果在循环的时候手动打开IE(就是双击IE图标啦),打开这个aspx页面,也能够很快加载。难道手动打开一个IE和window.open还不一样?!
解决方案八:
更正一下,window.open的是一个“html”页面,页面也很慢,也是必须等待循环的完成。window.open还是在原来的进程里面的,必须等待。我怎么才能启动一个新的进程?就像双击IE图标那样?
解决方案九:
顶上去!!
解决方案十:
顶!希望高手来解答!!
解决方案十一:
关注~
解决方案十二:
关注~
解决方案十三:
这么多人关注阿,谢谢咯!
解决方案十四:
因为你的window.open在主线程中,肯定要等待其完成不知道你的具体实现方式,考虑异步方式HttpWebRequest.BeginGetResponse方法或者使用BackgroudWork组件
解决方案十五:
多谢晓风老大的回复,有没有例子:)我这就去找找这两个东东的方法。
解决方案:
《.net2.0BackgroundWorker类详细用法》在WinForm中经常遇到一些费时的操作界面,比如统计某个磁盘分区的文件夹或者文件数目,如果分区很大或者文件过多的话,处理不好就会造成“假死”的情况,或者报“线程间操作无效”的异常,为了解决这个问题,可以使用委托来处理,在.net2.0中还可以用BackgroundWorker类。BackgroundWorker类是.net2.0里新增加的一个类,对于需要长时间操作而不需要用户长时间等待的情况可以使用这个类。注意确保在DoWork事件处理程序中不操作任何用户界面对象。而应该通过ProgressChanged和RunWorkerCompleted事件与用户界面进行通信。
解决方案:
谢谢两位老大!我程序的那个循环是这样的:循环了一个javascritp函数(ajax的前台函数),这个前台的函数调用后台函数(就是[WebMethod]里面的C#函数)取得各个网页内容,然后返回到前台填充到各个DIV内。在这个过程中我要打开新窗口(window.open)或其他的操作,都必须等这个循环!郁闷。请告诉我详细一些的思路吧,在下感激不尽!!我也正在看两位老大给的例子。
解决方案:
再顶顶!!
解决方案:
o_o
解决方案:
顶顶!!
解决方案:
帮忙顶下先
解决方案:
用window.open打开的这个窗口来调用父窗口的事件再用settimeout来实现也就是定时去调用一个ajax而参数为动态的。
解决方案:
用settimeout来实现;定时去调用一个ajax。
解决方案:
引用楼主hemeng的帖子:
是这样的,我在程序中循环使用了HttpWebRequest来抓取不同网页的内容,然后处理,把结果用javascript填充到不同的DIV中,就是抓完了第一个,填出第一个,在抓第二个,填充第二个。。。如果在这个循环的过程中,用window.open打开一个aspx页面,就会出现先打开一个白的窗口,然后等到那个循环结束的时候
這樣的做法,一旦有較多併發訪問,你的服務器受得了嗎?
解决方案:
引用6楼hemeng的回复:
如果在循环的时候,我window.open的是一个“html”页面,那么页面会很快加载,但是如果是aspx页面,那就必须等待夫窗口的循环执行完了,才加载。如果在循环的时候手动打开IE(就是双击IE图标啦),打开这个aspx页面,也能够很快加载。难道手动打开一个IE和window.open还不一样?!
“难道手动打开一个IE和window.open还不一样”,當然不是這個問題如我在23樓所述,IIS主線程正在處理你的同步HttpWebRequest,哪裡有時間來處理新的訪問?在Web頁中使用HttpWebRequest訪問其他網站的頁面的做法,是以浪費寶貴的IIS線程為代價的。如果你使用HttpWebRequest訪問同一站點的頁面,那么恭喜你,會發生一個超時錯誤。
解决方案:
凡是涉及到httprequest的任何东西,请换成webclient对象...要跟得上潮流.
解决方案:
非常值得学习.