有关c#中主程序走完才能走webBrowser的DocumentCompleted代码

苗码农的码典 2016-06-21 05:07:56
在网上查了很多内容,还是不能解决webBrowser控件在wb.Navigate()后的
wb_DocumentCompleted +=new....... 代码
用了BeginInvoke,join,myResetEvent都不能解决程序在主线程没完成前,先将DocumentCompleted中的代码
运行完成,我取到相应的数据,主程序再接着运行。

主程序已设为【STAthread】
主要是在主程序.join()后,hpweb中的代码在运行到 myResetEvent.Reset();就没反应了,所以求助大家帮下忙。


if(rs == "2")
{
///如果等于2就开始使用客户端模拟登录
CommonWeb c = new CommonWeb();
c.webBrowser = webBrowser1;
//loginDel loginDel = new loginDel(c.login);
//IAsyncResult asyncResult = loginDel.BeginInvoke(company, this.webBrowser1, new AsyncCallback(loginCallback), loginDel);
Thread th = new Thread(new ParameterizedThreadStart(c.login));
th.IsBackground = true;
th.Start(company);
th.Join();
if (c.isLogin)
{
MessageBox.Show("添加成功!");
}
}

上面这个是主程序代码,下面是创建线程中要运行的代码

class HpWeb
{
private WebBrowser wb;
private bool toLogin = false;//表示是否点击登录过
public bool isLogin; //表示登录是否成功
public bool loading = true; //表示正在加载
private Company company;
public bool hasLogin = false;//表示还需要重新登录一次,因为海派在已经登录的情况下在登录的话直接跳转页面,无法判断这个账号是否正确,所以要先退出再登录
public string msg;
public AutoResetEvent myResetEvent = new AutoResetEvent(false);

public HpWeb(Company company,WebBrowser webBrowser)
{
this.company = company;
this.wb = webBrowser;
}

public void login()
{
wb.Navigate("http://www.zjhpyy.com/login.jhtml");
wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted);
myResetEvent.Reset();
myResetEvent.WaitOne();
}

private void wb_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
。。。。。。。。。。。。。。。。。。逻辑代码


}





...全文
96 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
xdashewan 2016-06-21
  • 打赏
  • 举报
回复
你直接把主程序后续代码写wb_DocumentCompleted里面或者在wb_DocumentCompleted执行回调不就好了

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧