Articles of c # 5.0

Pourquoi TaskCanceledException se produit-il?

J’ai le code de test suivant: void Button_Click(object sender, RoutedEventArgs e) { var source = new CancellationTokenSource(); var tsk1 = new Task(() => Thread1(source.Token), source.Token); var tsk2 = new Task(() => Thread2(source.Token), source.Token); tsk1.Start(); tsk2.Start(); source.Cancel(); try { Task.WaitAll(new[] {tsk1, tsk2}); } catch (Exception ex) { // here exception is caught } } void Thread1(CancellationToken […]

Request.Content.ReadAsMultipartAsync ne renvoie jamais

J’ai une API pour un système écrit à l’aide de l’interface Web ASP.NET et j’essaie de l’étendre pour permettre le téléchargement d’images. J’ai fait des recherches sur Google et j’ai découvert que la méthode recommandée pour accepter des fichiers à l’aide de MultpartMemoryStreamProvider et de certaines méthodes asynchrones, mais que j’attendais sur ReadAsMultipartAsync, ne retourne […]

Comment asynchroniser Files.ReadAllLines et attendre les résultats?

J’ai le code suivant, private void button1_Click(object sender, RoutedEventArgs e) { button1.IsEnabled = false; var s = File.ReadAllLines(“Words.txt”).ToList(); // my WPF app hangs here // do something with s button1.IsEnabled = true; } Words.txt a une tonne de mots que je lis dans la variable s, j’essaie d’utiliser async et d’ await mots-clés dans C […]

Envelopper le code synchrone en appel asynchrone

J’ai une méthode dans l’application ASP.NET, qui consum pas mal de temps. Un appel à cette méthode peut se produire jusqu’à 3 fois au cours d’une requête utilisateur, en fonction de l’état du cache et des parameters fournis par l’utilisateur. Chaque appel prend environ 1 à 2 secondes. La méthode en elle-même est un appel […]

Différence entre TPL & async / waiting (Manipulation des threads)

Essayer de comprendre la différence entre le TPL et l’ async / await en matière de création de threads. Je crois que le TPL ( TaskFactory.StartNew ) fonctionne de manière similaire à ThreadPool.QueueUserWorkItem en ce sens qu’il met en queue le travail sur un thread dans le pool de threads. C’est bien sûr sauf si […]

Quelles sont les différences entre l’utilisation de ConfigureAwait (false) et de Task.Run?

Je comprends qu’il est recommandé d’utiliser ConfigureAwait(false) pour l’ await dans le code de la bibliothèque afin que le code suivant ne s’exécute pas dans le contexte d’exécution de l’appelant, qui pourrait être un thread d’interface utilisateur. Je comprends aussi await Task.Run(CpuBoundWork) devrait être utilisé à la place de CpuBoundWork() pour la même raison. Exemple […]

Architecture pour async / wait

Si vous utilisez async / waiting à un niveau inférieur de votre architecture, est-il nécessaire de “remonter” les appels asynchrones / en attente, est-ce inefficace puisque vous créez un nouveau thread pour chaque couche (appel asynchrone)? une fonction asynchrone pour chaque couche, ou cela n’a-t-il pas vraiment d’importance et dépend-il uniquement de vos préférences? J’utilise […]

Meilleur moyen de convertir la méthode asynchrone basée sur le rappel en tâche attendue

Quelle serait la meilleure façon de convertir / encapsuler une méthode asynchrone “classique” qui utilise un rappel vers quelque chose qui renvoie une tâche (attendue)? Par exemple, avec la méthode suivante: public void GetSsortingngFromUrl(ssortingng url, Action onCompleted); La seule façon dont je sais envelopper une méthode renvoyant une tâche est la suivante: public Task GetSsortingngFromUrl(ssortingng […]

En quoi la fonctionnalité asynchrone C # 5.0 diffère-t-elle de la TPL?

Je ne vois pas la différence entre les nouvelles fonctionnalités asynchrones de C # (et de VB) et la bibliothèque parallèle de tâches de .NET 4.0. Prenez, par exemple, le code d’ Eric Lippert d’ici : async void ArchiveDocuments(List urls) { Task archive = null; for(int i = 0; i < urls.Count; ++i) { var […]

Que puis-je faire en C # 5 avec .Net 4.5 que je ne pouvais pas faire en C # 4 avec .Net 4?

J’ai Visual Studio 2012 RC installé sur Windows 8 Release Preview et ma question est la suivante: existe-t-il de nouvelles fonctionnalités utiles non liées à Metro ou Metro qui sépare .Net 4 et .Net 4.5?