Maison > développement back-end > Tutoriel C#.Net > Exemple de méthode de démarrage d'utilisation des tâches

Exemple de méthode de démarrage d'utilisation des tâches

零下一度
Libérer: 2017-06-23 16:15:35
original
2923 Les gens l'ont consulté

Tout d'abord, utilisation de base

La différence entre Thread, ThreadPool et Task
Task a été ajoutée dans .NET4.0 et a des fonctions similaires au pool de threads ThreadPool lors de l'utilisation de Task pour démarrer. une nouvelle tâche, le thread sera appelé depuis le pool de threads et Thread créera un nouveau thread à chaque fois qu'il sera instancié.
S'il s'agit d'une opération à long terme, veuillez utiliser
TaskCreationOptions.LongRunning dans le constructeur Task (Acton, TaskCreationOptions), ce qui implique que le planificateur de tâches mette ce fil Exécuter sur un pool non-thread

Les deuxième et quatrième méthodes de démarrage

1) Démarrer par démarrer, nouveau Tâche, où le paramètre est une Action
 class Program
    {
        static void Main(string[] args)
        {
            Task t = new Task(DoA);
            t.Start();
            Console.ReadKey();
        }
        static void DoA()
        {
            for (int i = 0; i < 100; i++)
            {
                Console.WriteLine("i={0}\n", i);
            }
        }
    }
Copier après la connexion

 

2) Exécuter directement via Exécuter , accepte une Action comme paramètre, et l'objet de retour est une Tâche

 static void Main(string[] args)
        {
            Task.Run(() =>
            {
                for (int i = 0; i < 50; i++)
                {
                    Console.WriteLine("i={0}",i);
                }
            });
            Console.ReadKey();
        }
Copier après la connexion

3) Fil de discussion avec paramètres de retour

   Task<int> task = Task.Run<int>(() =>
            {
                int sum = 0;
                for (int i = 0; i < 50; i++)
                {
                    sum += 1;
                }
                return sum;
            });
            int result = task.Result;
            Console.WriteLine("运算结果是:{0}",result);//输出50
            Console.ReadKey();
Copier après la connexion

4) Via Task.Factory

  Task t = Task.Factory.StartNew(() =>
              {
                  for (int i = 0; i < 10; i++)
                  {
                      Console.WriteLine("i={0}", i);
                  }
              });
Copier après la connexion

 

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