Programmation asynchrone en C# 4A, analyse de cas d'asynchrone et attente de développement de programmes asynchrones

黄舟
Libérer: 2017-09-16 11:19:49
original
1897 Les gens l'ont consulté

Au fur et à mesure que la série de développement de programmes asynchrones C# s'approfondit, vous constaterez que l'écriture de programmes asynchrones devient de plus en plus facile. L'évolution des choses est ainsi, du simple au complexe puis au simple.

En C# 5.0, nous pouvons réaliser un développement de programme asynchrone rapide grâce aux mots-clés async et wait, comme suit :


        static void Main(string[] args)
        {            var task = GetResultAsyc();
            Console.WriteLine(String.Format("Main 线程:{0}", Thread.CurrentThread.ManagedThreadId));            
            for (int i = 0; i < 100; i++)
            {
                Console.Write(".");
                Thread.Sleep(10);
            }
            Console.WriteLine();
            Console.WriteLine(String.Format("Main 线程:{0},获取异步执行结果:{1}", Thread.CurrentThread.ManagedThreadId, task.Result));
            
            Console.ReadLine();
        }        private static async Task<int> GetResultAsyc()
        {
            Console.WriteLine(String.Format("线程:{0}", Thread.CurrentThread.ManagedThreadId));            
            var result = await Task.Run(() => {
                Console.WriteLine(String.Format("Task 线程:{0}", Thread.CurrentThread.ManagedThreadId));
                Thread.Sleep(5000);                return 10;
            });            return result;
        }
Copier après la connexion

Description du programme :

1. Les méthodes marquées par async indiquent des méthodes qui peuvent effectuer des appels asynchrones. Le nom de cette méthode doit se terminer par Async.

2. S'il y a une valeur de retour après l'exécution de la méthode asynchrone, le type de retour de la méthode asynchrone doit être Task. S'il n'y a pas de valeur de retour, il doit s'agir d'une tâche.

3. Dans la méthode marquée par async, vous pouvez ouvrir Task ou appeler d'autres méthodes asynchrones. Utilisez await avant d'appeler, et le thread appelant reviendra directement et. exécuter son code de suivi. Le programme appelé derrière wait est exécuté dans un ou plusieurs nouveaux threads (en fonction de l'imbrication et d'autres facteurs).

4. Une fois la fonction dans le nouveau thread exécutée, le résultat de retour sera renvoyé par le nouveau thread (ici, il ne s'agit pas de retour au thread appelant, mais au nouveau thread définissant le Task.Result obtenu par le fil appelant).

5. Lors de l'utilisation de wait Task ou Task.Result dans le thread appelant, le thread appelant attendra (bloquer) que le nouveau thread termine son exécution et obtienne le résultat.

Le résultat du programme est le suivant :

Comme nous l'avons présenté précédemment, les IO, Net, etc. associés après .Net Framework 4.5 prennent tous en charge async et wait En appelant, tout le développement de programmes asynchrones C# basé sur la version ci-dessus sera grandement simplifié.

Maintenant, le développement Web .Net a commencé à populariser la programmation asynchrone, ce qui contribue à améliorer le débit des E/S Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal