问题遇到的现象和发生背景
我在打印Task.CompletedTask.Id 时候 发现 当我没有创建任何Task的时候 可以打印出来一个已经完成的taskID = 1,此时我以为1是默认值 直到
用代码块功能插入代码,请勿粘贴截图
using(CancellationTokenSource source = new CancellationTokenSource()) {
Task task1 = Task.Factory.StartNew((obj) => {
Console.WriteLine("开始执行task1任务:" + obj + " ID :" + Task.CurrentId);
}, (object)"zzz", source.Token);
Console.WriteLine("task1ID: " + task1.Id);
Console.WriteLine("finishTaskID: " + Task.CompletedTask.Id);
}
运行结果及报错内容
我的解答思路和尝试过的方法
我尝试等task1完成后再次打印
using(CancellationTokenSource source = new CancellationTokenSource()) {
Task task1 = Task.Factory.StartNew((obj) => {
Console.WriteLine("开始执行task1任务:" + obj + " ID :" + Task.CurrentId);
}, (object)"zzz", source.Token);
Console.WriteLine("task1ID: " + task1.Id);
Thread.Sleep(1000);
Console.WriteLine("task1 State: " + task1.Status);
Console.WriteLine("finishTaskID: " + Task.CompletedTask.Id);
}
我发现通过 Task.CompletedTask获取的task仍然不是task1
我想要达到的结果
我想直到Task.CompletedTask获取的既然不是我已经完成的任务那它到底是什么?