首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >代理或FiddlerCore

代理或FiddlerCore
EN

Stack Overflow用户
提问于 2014-06-20 15:10:14
回答 1查看 1.1K关注 0票数 0

我正在编写一个程序来捕获HTTP请求。我找到了Fiddler核心,一个天才图书馆,应该做我想做的。

问题是,我试图在void FiddlerApplication_BeforeRequest(Session oSession)中执行一个很大的代码块,它似乎阻止了所有的请求,极大地损害了我的浏览速度。

我尝试过使用线程/任务,但没有效果。我做错了什么?

这是我的密码:

代码语言:javascript
复制
public event RequestCapture RequestCaptured;
private CancellationTokenSource cancelTokenSource = new CancellationTokenSource();

//...stat public function:
public void RunWatch() {
   Fiddler.FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest;
   Fiddler.FiddlerApplication.Startup(0, FiddlerCoreStartupFlags.Default);
}

void FiddlerApplication_BeforeRequest(Session oSession)
{
   if (RequestCaptured != null)
   {
      CancellationToken ct = cancelTokenSource.Token;
      Task.Factory.StartNew(() =>RequestCaptured(oSession.fullUrl), ct);
      //Handle the event in a new thread, so the Listener will continue to listen
   }

}

//close public function:
public void Close() {
   try
   {
      FiddlerApplication.Shutdown();
      cancelTokenSource.Cancel();
   }
   catch { }
}

现在我有不同的班级来做这个:

代码语言:javascript
复制
    public Form1()
    {
        Listiner = new HttpWatcher.Listner();
        Listiner.RequestCaptured += RequestCaptured;

        Listiner.RunWatch();
    }

    void RequestCaptured(string url)
    {
        System.Threading.Thread.Sleep(10000);
    }

编辑的问题是:是否有更好的方法使用小提琴核心?还是我要为此建立一个简单的代理呢?用别的东西?谢谢!

edit2我已经编辑了代码,这样它就可以填充缺失的部分。

EN

回答 1

Stack Overflow用户

发布于 2014-06-21 17:32:59

为了澄清这一点,FiddlerCore在线程池线程上处理每个会话。如果您需要阻塞行为,就不需要额外的线程或诸如此类的东西。如果不需要以阻塞方式处理数据,那么可以在后台队列上对数据进行排队,并使用任务或其他异步机制来执行处理。

当您说damage my surfing speed a great deal时,您应该确切地解释您的意思,以及在使用Fiddler而不是您的应用程序时,您是否看到了不同的行为。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24330403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档