¿Es posible "esperar el rendimiento del rendimiento DoSomethingAsync ()"

Son los bloques iteradores regulares (es decir, "rendimiento de rendimiento") incompatibles con "asíncrono" y "espera"?

Esto da una buena idea de lo que estoy tratando de hacer:

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;
}

Sin embargo, aparece un error del compilador que cita "no se puede cargar la cadena del mensaje de los recursos".

Aquí hay otro intento:

async Task<IEnumerable<Foo>> Method(String [] Strs)
{
    foreach(var str in strs)
    {
        yield return await DoSomethingAsync( str)
    }
}

Pero nuevamente, el compilador devuelve un error: "no se puede cargar la cadena del mensaje desde los recursos".

Aquí está el código de programación real en mi proyecto

Esto es muy útil cuando tengo una tarea de lista, esa tarea se puede descargar HTML desde una URL y uso la sintaxis "rendimiento devuelve espera tarea", el resultado es que quieroIEnumerable<Foo>. No quiero escribir este código:

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;
}

Pero parece que tengo que hacerlo.

Gracias por cualquier ayuda

Respuestas a la pregunta(9)

Su respuesta a la pregunta