2012-11-09 17 views
9

Ich überprüfte die System.Web.Mvc.AsyncController in MVC 4.0, es hat den Kommentar "für die Abwärtskompatibilität mit ASP.NET MVC 3 bereitgestellt." bedeutet dies, dass es eine neue Implementierung von asynchronen Controllern in MVC 4 gibt? Was ist der richtige Weg in MVC 4.0 async einen Controller zu aktivieren, um die I/O intensive Operationen in anderen Thread-Pool als IIS Anfrage Thread-Pool zu setzen?Async-Controller in ASP.NET MVC

Antwort

12

Ausgehend von ASP.NET MVC 4, können Sie jetzt die System.Web.Mvc.Controller Klasse als Basisklasse verwenden und die TAP (Task-basierte asynchrone Muster) nutzen:

public async Task<ViewResult> Index() { 

    return View(await GetThingsAsync()); 
} 

Beachten Sie, dass Sie nicht zu Verwenden Sie die Schlüsselwörter async und await, die mit C# 5.0 geliefert werden, aber sie machen die asynchrone Programmierung viel einfacher und wartungsfreundlicher.

Werfen Sie einen Blick auf die folgenden Artikel:

+0

Nicht 'async' und' await' kommen mit C# 4.5, nicht 5.0? – Spook

+2

@Spook gibt es keine C# 4.5: https://en.wikipedia.org/wiki/C_Sharp_(programming_language)#Versions async/erwarten Sprache Unterstützung kam mit C# 5.0 und es benötigt auch .NET 4.5. Sie können .NET 4.0 verwenden und die Async/aware-Sprachfunktionen mit einem NuGet-Paket des BCL-Teams nutzen: http://www.nuget.org/packages/Microsoft.Bcl.Async/ – tugberk