我通过lambda表达式创建了一批匿名函数,我想使用TaskId来将它们区分开。以下是代码:
int count = 3;
int i;
for (int j = 0; j < 10; j++)
{
i = 0;
Func<bool, Task<int>> func = async (b) =>
{
return j;
};
while (i++ < count)
{
var task = func(true);
Console.WriteLine(String.Format("Task Result:{0} TaskId:{1}",
task.Result, task.Id));
}
}
以下是输出结果
Task Result:0 TaskId:1
Task Result:0 TaskId:1
Task Result:0 TaskId:1
Task Result:1 TaskId:2
Task Result:1 TaskId:2
Task Result:1 TaskId:2
Task Result:2 TaskId:3
Task Result:2 TaskId:3
Task Result:2 TaskId:3
Task Result:3 TaskId:4
Task Result:3 TaskId:4
Task Result:3 TaskId:4
Task Result:4 TaskId:5
Task Result:4 TaskId:5
Task Result:4 TaskId:5
Task Result:5 TaskId:6
Task Result:5 TaskId:6
Task Result:5 TaskId:6
Task Result:6 TaskId:7
Task Result:6 TaskId:7
Task Result:6 TaskId:7
Task Result:7 TaskId:8
Task Result:7 TaskId:8
Task Result:7 TaskId:8
Task Result:8 TaskId:9
Task Result:8 TaskId:9
Task Result:8 TaskId:9
Task Result:9 TaskId:10
Task Result:9 TaskId:11
Task Result:9 TaskId:12
如您所见,由于结果大于8,TaskId已更改。我想知道这种现象的原因。谢谢你的帮助 :)