首页 > 编程语言 >关于C#中await Task.Delay的使用

关于C#中await Task.Delay的使用

时间:2025-01-21 19:44:50浏览次数:1  
标签:Task C# await 60 循环 单次 500 延迟

这次写代码出现了这样一个问题,

await Task.Delay(1000 * 60 * 60);  // 等待 1 小时

使用了这样一条语句,执行时发现UI界面的运行时间不更新了,于是查找资料,更改代码为下:

for (int j = 0; j < 2 * 60 * 60; j++)  // 总共循环 7200 次
{
    await Task.Delay(500);  // 每次延迟 500 毫秒
}

这次显示又正常了。于是总结了一下原因。

使用 for 循环

当需要在延迟过程中进行额外操作时(如定时检查、更新 UI、响应外部信号)。

例如:实现一个定时任务,每 500 毫秒检查是否需要停止

使用单次延迟

当只需要单纯等待一定时间,不需要任何额外操作时。

例如:模拟一个简单的定时器。

两者区别如下

两者主要区别

时间粒度

for 循环:每次只延迟 500 毫秒,循环中间可以插入其他操作,比如检查某个条件、更新状态等。

单次延迟:直接延迟 1 小时,整个过程是不可分割的。

响应性

for 循环:在每次 500 毫秒的间隔中,你可以执行其他逻辑,比如判断是否需要提前终止循环(例如通过检查取消标志 CancellationToken)。

单次延迟:在整个 1 小时内程序是“休眠”状态,没有机会处理其他任务。

性能

单次延迟:性能更高,因为没有循环的额外开销。

for 循环:性能稍逊,但灵活性更高。

标签:Task,C#,await,60,循环,单次,500,延迟
From: https://www.cnblogs.com/mhkj/p/18684322

相关文章

  • MC - 1
    MC-1设定摘自DreamSMP,目前没有想好具体的名字,姑且用原设定的吧。由于语言部分会很多,所以这里就不像写作文一样要求“说”字要搞成不同形式表达,这里一律规定说话就只用“:”,读的时候只需要知道谁说了什么即可。主要人物(介绍时后面括号为原著人物名字,找chatgpt随机生成了一......
  • [docker] 部署 Seata 分布式事务
    docker部署Seata分布式事务在使用Docker部署Seata并与Nacos配置中心结合时,你可以通过以下步骤来实现。Seata是一个开源的分布式事务解决方案,而Nacos是阿里巴巴开源的一个动态服务发现、配置和服务管理平台。一、环境准备部署好mysql服务部署好nacos服务二......
  • AIGC视频生成明星产品:SD模型的视频版SVD
    大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本文详细介绍StabilityAI的视频生成模型SVD(StableVideoDiffusion)模型,这家公司在图像生成领域富有盛名,开发并维护了知名开源项目SD系列图像生成模型。SVD是他们在视频生成领域的尝试,主要贡献是:系统的视频数据......
  • [nginx]: config php-fpm for nginx(config)
    [nginx]:configphp-fpmfornginx(config)    一、背景信息 1、服务器:rocky-9.3[root@rocky:conf.d]#uname-aLinuxrocky5.14.0-503.21.1.el9_5.x86_64#1SMPPREEMPT_DYNAMICWedJan817:35:30UTC2025x86_64x86_64x86_64GNU/Linux 2......
  • 题解:洛谷 P4879 ycz的妹子
    题目https://www.luogu.com.cn/problem/P4879感觉还比较简单的线段树。首先我们先建立一棵线段树(范围:)。voidbuild(intk,intl,intr){ tr[k]={l,r}; if(l==r){ Tree[k]=a[l],c[k]=(l<=n); return; } intmid=(l+r)>>1ll; build(k<<1ll,l,mid); build((k<<1ll)|1l......
  • 61,【1】BUUCTF WEB BUU XSS COURSE 11
    进入靶场左边是吐槽,右边是登录,先登录试试admin123456admiin'#123456admin"#123456不玩了,先去回顾下xss回顾完就很尴尬了,我居然用SQL的知识去做xss的题重来吐槽这里有一个输入框,容易出现存储型xss漏洞 常见的xsspayload如下: <script>alert(1)</script>"......
  • [超表面论文快讯-34] Light: Science & Applications-电磁超材料强化学习智能体-北京
    栏目介绍:“论文快讯”栏目旨在精简地分享一周内发表在高水平期刊上的Metasurface领域研究成果,帮助读者及时了解领域前沿动态,如果对专栏的写法或内容有什么建议欢迎留言,后续会陆续开启其他专栏,敬请期待。论文基本信息标题:Electromagneticmetamaterialagent作者:......
  • 为什么要学习C++?
            在编程语言的广阔天地中,C++以其独特的魅力和强大的功能占据着重要的一席之地。尽管它并非新兴的热门语言,学习曲线也相对陡峭,但这丝毫没有阻挡开发者们对它的热情。那么,究竟为什么要学习C++呢?接下来,我们将深入探讨其中的缘由。一、卓越的性能表现    ......
  • C++类型转换总结
    类型转换隐式转换C++自动执行很多类型转换:将一种算术类型的值赋给另一种算术类型的变量时,C++将对值进行转换;表达式中包含不同的类型时,C++将对值进行转换;将参数传递给函数时,C++将对值进行转换。C++类型转换的规则初始化和赋值进行的转换扩展:将一个值赋给值取值范......
  • C语言的那点事第五篇:编程界的“外卖小哥”函数
    函数就像是编程界的“外卖小哥”,帮你把任务分解成小块,然后把结果送回来。别担心,我会用幽默的方式带你飞驰在这个奇妙的世界里。咱们开始吧!1.函数定义与调用外卖小哥的职责:想象一下,你每天都要做饭,但每次都从头开始,那得多累啊!函数就像是你的“外卖小哥”,帮你把任务分解成小......