循环中的C#WebBrowser和Fiddlercore

时间:2016-09-14 17:34:29

标签: c# webbrowser-control fiddlercore

我使用Fiddlercore在循环内同时捕获多个url。

示例:

private void button1_Click(object sender, EventArgs e)
{
    // I have 2 url 
    string arr = new string[]{ url1, url2 };
    foreach(var url in arr)
    {
       new Webbrowser().Navigate(url);
    }

    Fiddler.FiddlerApplication.AfterSessionComplete 
        += new Fiddler.SessionStateHandler(FiddlerApplication_AfterSessionComplete);
    }

    // I will catch 2 oSession contain same string "a/b/c" in 2 URL from 2 Webbrowser in loop 
   int Count = 0;
   void FiddlerApplication_AfterSessionComplete(Fiddler.Session oSession)
   {
       if(oSession.fullUrl.contain("a/b/c"))
       {
           Count+= 1;
           richtextbox1.AppendText("oSession.fullUrl" + "\n");
       }

       if(Count == 2)
       {
           Count = 0;
           StopFiddler();
       }
   }

void StopFiddler()
{
    Fiddler.FiddlerApplication.AfterSessionComplete 
        -= new Fiddler.SessionStateHandler(FiddlerApplication_AfterSessionComplete);
}

这有效但我遇到了问题。 Fiddlercore停止捕获会话,但网络浏览器不会停止,它仍在加载。

如何在得到我需要的东西后停止加载WebBrowser。

1 个答案:

答案 0 :(得分:0)

使用WebBrowser.Stop()停止所有加载。

  

取消所有待处理的导航并停止所有动态页面元素,例如背景声音和动画。

编辑此外,您需要保存对您正在创建的WebBrowser控件的引用,以便您可以为它们实际调用Stop方法。你现在使用它们的方式很奇怪,可能会导致问题(实际上它已经导致了问题)。