You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core中如何实现类似TypeScript的异步延迟等待?

.NET Core 中实现 TypeScript 非阻塞延迟的正确方式

你提到的TypeScript代码:

await new Promise((resolve) => setTimeout(resolve, 10000));

本质是非阻塞式延迟——await会释放当前线程,让它可以去处理其他任务,10秒后再回到这段逻辑继续执行。

为什么Thread.Sleep(10000)效果不同?

System.Threading.Thread.Sleep(10000)是阻塞式睡眠:它会直接让当前线程挂起10秒,这段时间线程完全被占用,什么都做不了,和TS代码的非阻塞逻辑完全不是一回事,所以效果自然不一样。

await Task.Delay(10000)是不是更好的方案?

是的,这就是对应TS代码的正确实现,两者工作逻辑完全一致:

  • 调用Task.Delay(10000)时,会注册一个系统定时器,然后立刻返回一个未完成的Task对象
  • await关键字会释放当前线程,让线程回到线程池去处理其他请求或任务
  • 10秒后定时器触发,Task变为完成状态,后续逻辑会在线程池的可用线程上继续执行

给你一个完整的示例代码:

using System;
using System.Threading.Tasks;

public class Program
{
    public static async Task Main()
    {
        Console.WriteLine("开始非阻塞延迟");
        await Task.Delay(10000);
        Console.WriteLine("延迟结束,继续执行后续代码");
    }
}

内容的提问来源于stack exchange,提问作者mbrc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:01:31