Сравнение двух объектов System.Threading.Tasks - PullRequest
0 голосов
/ 23 января 2019

Из моего маленького эксперимента кажется, что все задачи равны.

Есть ли способ сравнить 2 задачи?

В моем понимании подуматьэто единственный способ создать дублирующую задачу из задачи t1, это сделать еще одну ссылку на нее.Итак, я подумал, что Equals будет проще поддерживать.

using System;
using System.Collections.Generic;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      var allTasks = new List<Task>();
      for (int i = 0; i < 10; ++i)
      {
          allTasks.Add(producerTask(i));
      }
      if (allTasks[0].Equals(allTasks[1]) && allTasks[0] == allTasks[1])
      {
          Console.WriteLine("Wrong tasks are equal");
      }
       var t1 = allTasks[8];
       if (!allTasks[8].Equals(t1) || !t1.Equals((allTasks[8])))
       {
           Console.WriteLine("Same tasks are not equal");
       }
      Task.WaitAll(allTasks.ToArray());
   }

   static Task producerTask(int i)
   {
       Console.WriteLine(i);
       return Task.CompletedTask;
   }
}

Вывод:

0
1
2
3
4
5
6
7
8
9
Wrong tasks are equal
...