我想使用BeginGetResponse方法来调用我保存在列表中的许多URL。
我对如何实现这个有2个问题:

根据http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse(v=vs.95).aspx中的示例


  • 我们用:
    public static ManualResetEvent allDone= new ManualResetEvent(false);
    

    在Web应用程序中使用静态成员是明智的做法,因为它已与其他线程共享?这会引起问题吗?
  • 我怎么知道所有回调何时完成?我需要对结果
  • 做一个总结报告

    谢谢

    最佳答案

  • 如果要在主线程中等待完成,则此解决方案不是很好。第一个请求会将事件的状态更改为“设置”。因此,主线程将在第一个请求完成后继续执行。
  • A建议您使用CountdownEvent:
       using(var countdownEvent = new CountdownEvent(list.Count))
       {
           // launch requests with countdownEvent.Signal(); in the end
           countdownEvent.Wait();
       }
    

    您必须将对countdownEvent的引用存储在RequestState中。另外,不要忘记控制超时-使用ThreadPool.RegisterWaitForSingleObject启动新线程。
  • 关于c# - Web应用程序中的BeginGetResponse,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11420252/

    10-12 03:27