Exemple de tâche en C#

Je suis en train de créer à l'aide de Tâches en C#.
Je suis en train d'exécuter ce code.

    private static void CreateSubtask() {

        Task<Int32[]> parent = Task.Run(() =>
        {
            var results = new Int32[3];
            new Task(() => results[0] = 0,
                TaskCreationOptions.AttachedToParent).Start();
            new Task(() => results[1] = 1,
                TaskCreationOptions.AttachedToParent).Start();
            new Task(() => results[2] = 2,
                TaskCreationOptions.AttachedToParent).Start();
            return results;
        });
        var finalTask = parent.ContinueWith(
           parentTask =>
           {
               foreach (int i in parentTask.Result)
                   Console.WriteLine(i);
           });
        finalTask.Wait();
    }

La finalTask ne fonctionne que si le parent Tâche est terminée, et le parent Tâche se termine lorsque toutes les trois enfants sont finis. Vous pouvez l'utiliser pour créer assez complexe la Tâche des hiérarchies qui va passer par toutes les étapes que vous avez spécifié.

Ce que j'ai obtenu à partir de l'exécution à la place est de trois lignes en disant:

0
0
0

Je m'attendais à être

0
1
2

Suis-je droit?

  • Je ne suis pas familier avec la Task Parallel Library, mais je suppose que les trois tâches que vous créez dans votre tâche parent n'ayant pas encore au moment de la lecture d' parents'entraîner. Il semble que vous attendez pour parent à la fin, mais pas pour les trois tâches créées insinde parent.
  • double possible de TaskCreationOptions.AttachedToParent n'est pas d'attente pour tâche enfant
  • J'ai couru votre code et j'obtiens 0 1 2 qui est ce que je m'attends
InformationsquelleAutor MaPi | 2013-10-07