Maison  >  Article  >  développement back-end  >  Exemple de méthode de démarrage d'utilisation des tâches

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

零下一度
零下一度original
2017-06-23 16:15:352836parcourir

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);
            }
        }
    }

 

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();
        }

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();

4) Via Task.Factory

  Task t = Task.Factory.StartNew(() =>
              {
                  for (int i = 0; i < 10; i++)
                  {
                      Console.WriteLine("i={0}", i);
                  }
              });

 

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!

Déclaration:
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