比较System.Threading.Tasks的两个对象

时间:2019-01-23 04:50:10

标签: c# task equality

从我的小experiment看来,所有任务都是平等的。

有没有办法比较两个任务?

以我的理解,考虑一下,从任务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

0 个答案:

没有答案