假設我有下面的類:遞歸異步HttpWebRequests
Public class FooBar
{
List<Items> _items = new List<Items>();
public List<Items> FetchItems(int parentItemId)
{
FetchSingleItem(int itemId);
return _items
}
private void FetchSingleItem(int itemId)
{
Uri url = new Uri(String.Format("http://SomeURL/{0}.xml", itemId);
HttpWebRequest webRequest = (HttpWebRequest)HttpWebRequest.Create(url);
webRequest.BeginGetResponse(ReceiveResponseCallback, webRequest);
}
void ReceiveResponseCallback(IAsyncResult result)
{
// End the call and extract the XML from the response and add item to list
_items.Add(itemFromXMLResponse);
// If this item is linked to another item then fetch that item
if (anotherItemIdExists == true)
{
FetchSingleItem(anotherItemId);
}
}
}
有可能是任何數量的鏈接項目,我只知道在運行的。
我想要做的就是首先打電話給FetchSingleItem
,然後等到所有的呼叫都完成後再返回List<Items>
給調用代碼。
有人能指出我在正確的方向?我很樂意重構整個事情,如果需要的話(我懷疑是這種情況!)
你爲什麼不使用WebClient.DownloadStringAsync? – AnthonyWJones 2011-03-25 22:14:56