द्वारा लौटाए गए कार्य में अधिक विवरण कैसे जोड़ें, निम्नलिखित कोड कई यूआरएल से असीमित रूप से सामग्री पुनर्प्राप्त कर रहा है, और जैसे ही एक सामग्री डाउनलोड की गई है, कार्य के लिए धन्यवाद। जब भी, तो यह संसाधित हो जाता है। लेकिन संसाधित भाग में, मुझे पहचानकर्ता वस्तु की आवश्यकता है। मुझे लगता है कि आप कोड को दिखाने के लिए स्पष्ट है:HttpClient.GetAsync
var downloadTasks = new List<Task<string>>();
foreach (var identifier in input.Identifiers)
{
string url = BuildUrl(identifier, input.PeriodInYear, input.Interval);
var data = _webRequest.GetData(url, token);
downloadTasks.Add(data); // Here I only add the data, but not the Identifier. I thought about using a List<Tuple<Identifier, Task<string>>, but then I can't use it with Task.WhenAny(...)
}
while (downloadTasks.Count > 0)
{
var finishedDownloadTask = await Task.WhenAny(downloadTasks);
downloadTasks.Remove(finishedDownloadTask);
foreach (var content in await finishedDownloadTask)
{
// hereI I also need the Identifier object here !
}
}
यहाँ GetData का कोड:
public virtual async Task<string> GetData(string uri, CancellationToken token)
{
// log removed
// try catch removed
string result = string.Empty;
using (var client = new HttpClient())
using (var response = await client.GetAsync(uri, token).ConfigureAwait(false))
{
if (response.IsSuccessStatusCode)
result = await response.Content.ReadAsStringAsync().ConfigureAwait(false);
else
logger.Error("Unable to retrieve data from the following url: {0} - StatusCode: {1}", uri, response.StatusCode);
}
return result;
}