Articles of c # 5.0

Fonction asynchrone / d’attente C # 5.0 et extensions Rx – Reactive

Je me demande ce que signifient les nouvelles fonctions asynchrones C # 5.0 pour les extensions Rx – Reactive? Cela ne semble pas être un remplacement mais ils semblent se chevaucher – Task et IObservable . EDIT: Tâche vs IObservable: quand utiliser quoi?

Async / wait convient-il aux méthodes à la fois liées à IO et au CPU?

La documentation MSDN semble indiquer que les fonctions async et await conviennent aux tâches liées aux E / S tandis que Task.Run doit être utilisé pour les tâches liées au processeur. Je travaille sur une application qui effectue des requêtes HTTP pour récupérer des documents HTML, puis les parsing. J’ai une méthode qui ressemble à […]

TaskCompletionSource: Quand utiliser SetResult () contre TrySetResult (), etc.

J’essaie de me TaskCompletionSource sur la TPL, les nouvelles fonctionnalités async / await dans C # 5 et les mystères de TaskCompletionSource . Une chose qui n’est pas claire pour moi est de savoir quand utiliser SetResult , SetException et SetCancel par rapport à TrySetResult , TrySetException et TrySetCancel . Voici ce que MSDN a […]

Comment forcer les substitutions enfants asynchrones dans C # 5.0

Je travaille sur un système dans lequel plusieurs objects client sont supposés implémenter une fonction particulière via une interface, et je souhaite que cette fonction s’exécute de manière asynchrone avec les continuations (les implémentations doivent être liées aux E / S et assurez-vous que tous les objects client remplissent cette fonction dès que possible). J’utilise […]

Fermeture capturée (variable de boucle) en C # 5.0

Cela fonctionne très bien (signifie comme prévu) en C # 5.0: var actions = new List(); foreach (var i in Enumerable.Range(0, 10)) { actions.Add(() => Console.WriteLine(i)); } foreach (var act in actions) act(); Imprime de 0 à 9. Mais celui-ci affiche 10 fois 10 fois: var actions = new List(); for (var i = 0; […]

Un point d’entrée ne peut pas être marqué avec le modificateur ‘async’

J’ai copié ci-dessous le code de ce lien. Mais lorsque je comstack ce code, je reçois un point d’entrée qui ne peut pas être marqué avec le modificateur “async” . Comment puis-je rendre ce code compilable? class Program { static async void Main(ssortingng[] args) { Task getWebPageTask = GetWebPageAsync(“http://msdn.microsoft.com”); Debug.WriteLine(“In startButton_Click before await”); ssortingng webText […]

Comment attend-on le travail asynchrone en C #

J’essaie de comprendre comment attendre le travail asynchrone en C # et une chose me déroute beaucoup. Je comprends que toute méthode qui utilise un mot-clé en attente doit être marquée avec async. D’après ce que je comprends, lorsqu’une ligne avec mot-clé en attente est atteinte, le code en dessous de cette ligne n’est pas […]

Fire-and-forget avec async vs «ancien délégué asynchrone»

J’essaie de remplacer mes anciens appels «fire-and-forget» par une nouvelle syntaxe, en espérant plus de simplicité et cela semble m’échapper. Voici un exemple class Program { static void DoIt(ssortingng entry) { Console.WriteLine(“Message: ” + entry); } static async void DoIt2(ssortingng entry) { await Task.Yield(); Console.WriteLine(“Message2: ” + entry); } static void Main(ssortingng[] args) { // […]

Pourquoi ICollection générique n’implémente-t-il pas IReadOnlyCollection dans .NET 4.5?

Dans .NET 4.5 / C # 5, IReadOnlyCollection est déclaré avec une propriété Count : public interface IReadOnlyCollection : IEnumerable, IEnumerable { int Count { get; } } Je me demande si ICollection n’aurait pas aussi bien pu implémenter l’ IReadOnlyCollection : public interface ICollection : IEnumerable, IEnumerable, *IReadOnlyCollection* Cela aurait signifié que les classes […]

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 […]