Являются ли регулярные блоки итератора (т.е. "доходность возврата" ) несовместимыми с "асинхронными" и "ожидающими"?
Это дает хорошее представление о том, что я пытаюсь сделать:
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 html code
);
return finalResult;
}
Однако, я получаю ошибку компилятора, ссылаясь на "невозможно загрузить строку сообщения из ресурсов".
Вот еще одна попытка:
async Task<IEnumerable<Foo>> Method(String [] Strs)
{
foreach(var str in strs)
{
yield return await DoSomethingAsync( str)
}
}
Но опять же, компилятор возвращает ошибку: "невозможно загрузить строку сообщения из ресурсов".
Вот реальный код программирования в моем проекте
Это очень полезно, когда у меня есть задача списка, эта задача может загружать HTML из URL-адреса
и я использую синтаксис "return return wait task", в результате я хочу 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;
}
Но мне кажется, что я должен.
Спасибо за любую помощь.