2012-11-09 33 views
9

Ho controllato System.Web.Mvc.AsyncController in MVC 4.0, ha il commento "Fornito per compatibilità con versioni precedenti di ASP.NET MVC 3." Questo significa che c'è una nuova implementazione del controller async in MVC 4? qual è il modo corretto in MVC 4.0 abilitare async un controller per mettere le operazioni I/O intense in un altro pool di thread diverso dal pool di thread di richieste IIS?Controller asincrono in ASP.NET MVC

risposta

12

A partire da ASP.NET MVC 4, è ora possibile utilizzare la classe System.Web.Mvc.Controller come classe base e sfruttare il TAP (Task-based del modello asincrono):

public async Task<ViewResult> Index() { 

    return View(await GetThingsAsync()); 
} 

Si noti che non c'è bisogno di utilizzare le parole chiave async e await fornite con C# 5.0 ma rendono la programmazione asincrona molto più semplice e più gestibile.

Date un'occhiata ai seguenti articoli:

+0

Vuol non '' e async' await' sono dotati di C# 4.5, non 5.0? – Spook

+2

@Spook non c'è C# 4.5: https://en.wikipedia.org/wiki/C_Sharp_(programming_language)#Versions async/await language support fornito con C# 5.0 e richiede anche .NET 4.5. È possibile utilizzare .NET 4.0 e sfruttare le funzionalità linguistiche asincrone/attese con un pacchetto NuGet dal team BCL: http://www.nuget.org/packages/Microsoft.Bcl.Async/ – tugberk

Problemi correlati