क्या नियमित रूप से चलने वाले अवरोधक (जैसे "उपज वापसी") "एसिंक्स" और "प्रतीक्षा" के साथ असंगत हैं?
यह एक अच्छा विचार देता है कि मैं क्या करने की कोशिश कर रहा हूं:
async Task<IEnumerable<Foo>> Method(String [] Strs)
{
// I want to compose the single result to the final result, so I use the SelectMany
var finalResult = UrlStrings.SelectMany(link => //i have an Urlstring Collection
await UrlString.DownLoadHtmlAsync() //download single result; DownLoadHtmlAsync method will Download the url's html code
);
return finalResult;
}
हालांकि, मुझे "संसाधनों से संदेश स्ट्रिंग लोड करने में असमर्थ" का हवाला देते हुए एक संकलक त्रुटि मिलती है।
यहाँ एक और प्रयास है:
async Task<IEnumerable<Foo>> Method(String [] Strs)
{
foreach(var str in strs)
{
yield return await DoSomethingAsync( str)
}
}
लेकिन फिर से, कंपाइलर एक त्रुटि देता है: "संसाधनों से संदेश स्ट्रिंग लोड करने में असमर्थ"।
यहाँ मेरी परियोजना में वास्तविक प्रोग्रामिंग कोड है
यह बहुत उपयोगी है जब मेरे पास एक सूची कार्य है, उस कार्य को एचटीएमएल एक यूआरएल से डाउनलोड किया जा सकता है और मैं वाक्यविन्यास "उपज वापसी प्रतीक्षा कार्य" का उपयोग करता हूं, परिणाम मुझे चाहिए IEnumerable<Foo>
। मैं यह कोड नहीं लिखना चाहता:
async Task<IEnumerable<String>> DownLoadAllURL(String [] Strs)
{
List<Foo> htmls= new ...
foreach(var str in strs)
{
var html= await DownLoadHtmlAsync( str)
htmls.Add(item)
}
return htmls;
}
लेकिन ऐसा लगता है कि मुझे करना है।
किसी भी मदद के लिए धन्यवाद।
IAsyncEnumerator<T>
आर्ने द्वारा परिभाषित प्रकार का उपयोग करते हैं ।