MVC4 + Async / Warten + Rückantwort, bevor die Aktion abgeschlossen ist

In meiner MVC4-App muss ich einen Controller zum Hochladen und Verarbeiten großer Dateien hinzufügen. Unmittelbar nach dem Hochladen der Datei muss die asynchrone Verarbeitung dieser Datei gestartet und eine Antwort an den Browser zurückgegeben werden, ohne auf den Abschluss der Verarbeitung zu warten.

Natürlich könnte ich einen neuen Thread für die manuelle Verarbeitung der Datei starten, aber ich frage mich, ob ich dieses Szenario mithilfe des mit .net 4.5 eingeführten Async / Warten-Mechanismus implementieren kann

Um das Konzept zu testen, habe ich Folgendes versucht:

public async Task<ActionResult> Test()
{
    TestAsync();
    return View("Test");
}

public async void TestAsync()
{
    await LongRunning();
}

private Task<int> LongRunning()
{
    return Task<int>.Factory.StartNew(() => Pause());
}

private int Pause()
{
    Thread.Sleep(10000);
    return 3;
}

Der asynchrone Mechanismus scheint im Allgemeinen zu funktionieren: Wenn ich den Code debugge, drücke ich auf "return View (" Test ");" Zeile vor der Zeile "return 3". Der Browser empfängt die Antwort jedoch erst, nachdem die Pausenmethode abgeschlossen ist.

Dies scheint sich wie normale asynchrone Controller zu verhalten (die mit den Methoden Async und Completed). Gibt es eine Möglichkeit, Async / Warten in Controllern für mein Szenario zu verwenden?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage