从我的小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