一梭键盘任平生 2022-10-12 11:15 采纳率: 100%
浏览 55
已结题

关于 Task.CompletedTask 的疑问

问题遇到的现象和发生背景

我在打印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);
        }

运行结果及报错内容

img

我的解答思路和尝试过的方法

我尝试等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);
        }

img


我发现通过 Task.CompletedTask获取的task仍然不是task1

我想要达到的结果

我想直到Task.CompletedTask获取的既然不是我已经完成的任务那它到底是什么?

  • 写回答

4条回答 默认 最新

  • 「已注销」 2022-10-12 12:02
    关注

    就是一个独立的任务以区别于任何其他的任务,所以你取的时候都是不会和你创建的任务id相同。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月20日
  • 已采纳回答 10月12日
  • 创建了问题 10月12日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度