목록에있는 많은 URL을 호출하기 위해 BeginGetResponse 메서드를 사용하고 싶습니다. 우리가 사용하는 http://msdn.microsoft.com/en-us/library/system.net.httpwebrequest.begingetresponse(v=vs.95).aspx 웹 응용 프로그램의 BeginGetResponse
에
- 예에 따라 : 나는 이것을 구현하는 방법에 대한이 개 질문이
public static ManualResetEvent allDone= new ManualResetEvent(false);
현명한 웹 응용 프로그램에서 정적 멤버를 사용하는 것입니다 다른 스레드와 공유 되었기 때문에? 이것이 문제의 원인이 될 수 있습니까?
- 모든 콜백이 완료된 것을 어떻게 알 수 있습니까? 최적의 워크 플로우가 이벤트를 필요로하지 않습니다
int total = urls.Count; ManualResetEvent evt = new ManualResetEvent(); ConcurrentBag<WebResponses> responses = new ConcurrentBag<WebResponse>(); foreach(Uri in uri) { HttpWebRequest req = ...; req.BeginGetResponse(res=> { WebResponse res = req.EndGetResponse(); // do what you need with the response. // maybe add it to a collection so you can report on it later: responses.Add(res); if(Interlocked.Decrement(ref total) == 0) { // this was the last response. set event. evt.Set(); } }, null); } evt.Wait(); foreach(WebResponse res in responses) { // report something about the response. }
참고 : 난 당신이 그런 짓을하려는 생각
감사 결과에
- 모든 콜백이 완료된 것을 어떻게 알 수 있습니까? 최적의 워크 플로우가 이벤트를 필요로하지 않습니다
안녕 캐스퍼 불행히도 나는 .NET 3.5를 사용하고있다. 그러나 기다리는 것이 있다는 것을 아는 것은 좋다. :) – Tsahi
조금 설명 할 수 있겠습니까? 이 방법을 사용하여 요청의 응답을 얻는 방법은 무엇입니까? –