这个方法被调用一次 自己却执行两次(求指点,得永生啊~)

lrl1986 2014-07-29 10:18:35
求大神抽点时间 看一眼啊


当进入代码第二个IF时(就是注解是+++的那行) 当执行完里面的 就又到方法最开始执行一次 还是进入到这个IF 同时也执行了两次 IF中的TICK

private void Web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
WebBrowser web = sender as WebBrowser;
web.Document.Window.Error += new HtmlElementErrorEventHandler(Web_Error);//去掉错误提示
if (web.Tag != null && web.Tag.GetType() == typeof(DataRowView))
{
DataRowView drv = web.Tag as DataRowView;
if (web.Url.ToString().IndexOf("id=" + drv["CargoId"]) == -1)//++++++++++++
{
SetDataRowViewText(drv, null, null, null, "准备浏览...", "准备" + Be.BeforeBrowse.ToString() + "秒");
Console.WriteLine("********准备浏览GGG********" + drv["CargoId"] + "********" + DateTime.Now);
System.Windows.Forms.Timer timerBrowse = new System.Windows.Forms.Timer();
timerBrowse.Interval = Be.BeforeBrowse * 1000;
timerBrowse.Tag = web;
timerBrowse.Tick += new EventHandler(timerBrowse_Tick);
timerBrowse.Start();
Console.WriteLine("********准备浏览EEE********" + drv["CargoId"] + "********" + DateTime.Now);
}
else
{
Console.WriteLine("********浏览后GGG********" + drv["CargoId"] + "********" + DateTime.Now);
SetDataRowViewText(drv, null, null, null, "正在浏览...", "浏览" + Be.Browseing.ToString() + "秒");
System.Windows.Forms.Timer timerDispose = new System.Windows.Forms.Timer();
timerDispose.Interval = Be.Browseing * 1000;
timerDispose.Tag = web;
timerDispose.Tick += new EventHandler(timerDispose_Tick);
timerDispose.Start();
Console.WriteLine("********浏览后EEE********" + drv["CargoId"] + "********" + DateTime.Now);
}
}
} }
}


...全文
426 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
涛锅 2014-07-31
  • 打赏
  • 举报
回复
引用 10 楼 davinciyxw 的回复:
你看看timerBrowse_Tick里面是不是什么逻辑又触发到这个事件了呢
有同感
  • 打赏
  • 举报
回复
你看看timerBrowse_Tick里面是不是什么逻辑又触发到这个事件了呢
smthgdin_020 2014-07-30
  • 打赏
  • 举报
回复
应该有其他地方触发。
宝_爸 2014-07-30
  • 打赏
  • 举报
回复
很多情况会被调用两次,看看下面的讨论,能不能帮你 Why is WebBrowser_DocumentCompleted() firing twice? http://stackoverflow.com/questions/2328835/why-is-webbrowser-documentcompleted-firing-twice 另外看看他的标题,比你的标题准确多了,DocumentCompleted是事件激发,不应该说调用。
lrl1986 2014-07-30
  • 打赏
  • 举报
回复
引用 8 楼 findcaiyzh 的回复:
很多情况会被调用两次,看看下面的讨论,能不能帮你 Why is WebBrowser_DocumentCompleted() firing twice? http://stackoverflow.com/questions/2328835/why-is-webbrowser-documentcompleted-firing-twice 另外看看他的标题,比你的标题准确多了,DocumentCompleted是事件激发,不应该说调用。
我看不懂````全是英文`````````您说的对 我的情况跟他有一点不一样 就是web.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Web_DocumentCompleted); 我这个加载完成后 Web_DocumentCompleted 这个里面我想做的事情 当运动到if里面的时候 才被执行两次 到else的时候就是正常的一次了```
ZA0810 2014-07-30
  • 打赏
  • 举报
回复
去VS 自动生成里面看看 你的方法是不是被两次绑定.
181824442 2014-07-29
  • 打赏
  • 举报
回复
能把完整的代码贴出来吗?我用WCF的时候完成事件也是会调多两次,是因为我的WCF服务代理类用的是全局的,造成了事件多次执行。
lrl1986 2014-07-29
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
是不是有框架网页,有几个框架网页就会触发几次。
我不懂啊 我就不明白 为什么一运行到这个方法的时候 执行到中间if的时候就会执行两次 到else里面的时候就是正常一次
threenewbee 2014-07-29
  • 打赏
  • 举报
回复
另外 web.Document.Window.Error += new HtmlElementErrorEventHandler(Web_Error); 这回导致每执行一次,就会多挂钩一个Web_Error
threenewbee 2014-07-29
  • 打赏
  • 举报
回复
是不是有框架网页,有几个框架网页就会触发几次。

110,539

社区成员

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

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

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