我有5個URL,我想爲每個請求做一個Http請求,並等待有條件的第一個響應。獲得並行的第一個Http響應
List<string> urls; // url1, url2, ......
ParallelLoopResult result = Parallel.ForEach(urls, url=> GetTimeSlot(url));
private string GetTimeSlot(string url)
{
HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse response = (HttpWebResponse)wr.GetResponse();
string responseString = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(response.CharacterSet)).ReadToEnd();
if (responseString.Length < 6)
return ""; //PARALEL RESUME
else
return responseString; //PARALEL ENDS
}
我只需要第一個響應。並行還是有可能嗎?還有更好的方法嗎?謝謝。
使用鎖,使其確保沒有其他線程正在更新的結果。當你調用cts.Cancel()時拋出的OperationCanceledException是你期望的。如果它是另一個異常,但是OperationCanceledException表示WebRequest出錯了。 – Dynamikus
非常感謝你兄弟。有效!!我要測試'lock'。 –
np祝你好運!!! – Dynamikus