好乱啊。看的不是很明白。但是多县城不能同事操作UI界面。 这个是时刻要明确的。 不能让后台线程去更新UI界面上的东西,需要更新可以采用跨线程推送。 MSDN上有们的例子,非常简单。看一下就可以了。如果你要用WB去显示多个页面,WB内部本身是多线程的,但是它里边已经有了处理,你不用关心。 其实你指定WB去加载页面后,加载动作就是后台的,你不用启动那么多线程啦。 你只要挨个启动就可以WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK); WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK); WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK); WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK); WB1.Navigate(....); WB2.Navigate(....); WB3.Navigate(....); WB4.Navigate(....); 在 WB_OK方法中处理你的完成事物。 其实完成事件你可以用多个方法分别处理。 但是从编程风格上建议用同一个方法 然后通过SENDER参数获取具体的完成对象。
这个是时刻要明确的。
不能让后台线程去更新UI界面上的东西,需要更新可以采用跨线程推送。 MSDN上有们的例子,非常简单。看一下就可以了。如果你要用WB去显示多个页面,WB内部本身是多线程的,但是它里边已经有了处理,你不用关心。
其实你指定WB去加载页面后,加载动作就是后台的,你不用启动那么多线程啦。
你只要挨个启动就可以WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
WB1.DocumentCompleted += new new WebBrowserDocumentCompletedEventHandler(WB_OK);
WB1.Navigate(....);
WB2.Navigate(....);
WB3.Navigate(....);
WB4.Navigate(....);
在 WB_OK方法中处理你的完成事物。
其实完成事件你可以用多个方法分别处理。 但是从编程风格上建议用同一个方法 然后通过SENDER参数获取具体的完成对象。
常见的是重写 屏蔽alert 等方法。 如果页面还有特殊脚本 要研究一下,重写 替换掉。
webBrowser1_查询网站1_DocumentCompleted+=webBrowser1_查询网站1_DocumentCompleted
如果去掉while (complete_state[0] < 1)这里的判断条件,换做方法1,过一会,"查询网站1_DocumentCompleted"会执行,正常反应
但就是加上这个条件,<1的情况,然后把后面要运行的东西放到while当中去...程序都会假死...然后一直没有反应,,我有监视complete_state[0]的值,一直是0......"查询网站1_DocumentCompleted"就没有执行...是不是我暂停程序的方式不太对?
然后指定动作。 总是善于使用事件 对后台线程与界面UI进行分离。
WB1.Navigate(....);
WB2.Navigate(....);
WB3.Navigate(....);
WB4.Navigate(....);这个耗费的时间还是累加的,测试6个学生成绩信息网页时42秒,
我会出错的那个,运气好,最后一个才出错,花的时间一般是3-5秒,这样,
像是多线程死锁问题
这个判断不能用了...没有stopped属性了...咋办咧....