J'ai cette méthode Async à l'intérieur du contrôleur API Web ASP.NET MVC 4 que j'ai reçu de ce blog: http://www.strathweb.com/2012/04/html5-drag-and-drop-aSynchronique-multi-file-upload-with-asp-net-webapi/
public async void Post() { List<RecivedFile> result = new List<RecivedFile>(); if (Request.Content.IsMimeMultipartContent()) { try { MultipartFormDataStreamProvider stream = new MultipartFormDataStreamProvider(HostingEnvironment.MapPath("~/USER-UPLOADS")); IEnumerable<HttpContent> bodyparts = await Request.Content.ReadAsMultipartAsync(stream); IDictionary<string, string> bodyPartFiles = stream.BodyPartFileNames; IList<string> newFiles = new List<string>(); foreach (var item in bodyPartFiles) { var newName = string.Empty; var file = new FileInfo(item.Value); if (item.Key.Contains("\"")) newName = Path.Combine(file.Directory.ToString(), item.Key.Substring(1, item.Key.Length - 2)); else newName = Path.Combine(file.Directory.ToString(), item.Key); File.Move(file.FullName, newName); newFiles.Add(newName); } } catch (Exception e) { } } }
3 Réponses :
Avec vide de type de retour que vous n'attendez pas un objet retour .. Vous attendez une opération à la fin. Vous attendez votre Tâche strong> à la fin. P>
Je ne sais pas que vous vous référez en disant «vous» («vous n'attendez pas»). Je ne veux pas attendre quoi que ce soit. Le point ici qu'il est utilisé dans l'API Web et je ne peux pas comprendre ce que voulez-vous exactement que j'attends?
L'heure d'exécution ASP.NET attend. Vous pouvez trouver Cette vidéo utile. P>
La plupart des exemples de async code> supposent un contexte d'assurance-chômage. Asp.net fournit également un contexte , mais c'est un contexte "Demande" - un pour chaque demande HTTP. Mon
async code> /
donne une vue d'ensemble de ce "contexte" et le attendre code > Post
async code> /
passe dans beaucoup plus de détails. P> attendre code> FAQ
La conclusion est donc de ne jamais renverser le vide dans les méthodes asynchrones lorsqu'il est utilisé dans ASP.NET
Il y a une poignée de situations dans ASP.NET 4.5 où vous pouvez utiliser une méthode async vide code> - le moteur d'exécution détectera et réagir de manière appropriée. Mais en règle générale, il est préférable d'utiliser
async Tâche code> sauf si vous avez vraiment Vous i> à faire
async vide code>.
car vide async est essentiellement « feu et oublier » il y a très rarement une raison de le faire. Un exemple est le page_load dans les nouveaux formulaires Web - protégé async void Page_Load (object sender, EventArgs e)
Si vous revenez vide, vous retournerez 204 message de réponse « Pas de contenu » immédiatement quel que soit l'état d'avancement de votre opération asynchrone. Cela se fait à l'aide de Remarque: RC, vous verrez qu'il retourne réponse 200 « OK » mais avec
la RTM, il retournera 204 réponse "Pas de contenu". p>
blockQuote> VoidResultConverter code>. P>