erwarten vs Task.Wait - Deadlock?

Ich verstehe den Unterschied nicht ganzTask.Wait undawait.

Ich habe in einem ASP.NET-WebAPI-Dienst etwas Ähnliches wie die folgenden Funktionen:

public class TestController : ApiController
{
    public static async Task<string> Foo()
    {
        await Task.Delay(1).ConfigureAwait(false);
        return "";
    }

    public async static Task<string> Bar()
    {
        return await Foo();
    }

    public async static Task<string> Ros()
    {
        return await Bar();
    }

    // GET api/test
    public IEnumerable<string> Get()
    {
        Task.WaitAll(Enumerable.Range(0, 10).Select(x => Ros()).ToArray());

        return new string[] { "value1", "value2" }; // This will never execute
    }
}

WoherGet wird festfahren.

Was könnte das verursachen? Warum verursacht dies kein Problem, wenn ich eine blockierende Wartezeit verwende, anstattawait Task.Delay?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage