如何延迟一个 Task 的执行 ?
咨询区
Bruno Lopes
我想实现一个可以在延迟 Xms
后执行一个 task 的需求,并要求能够实现在 xms
之前取消 task 的执行,我的参考代码如下:
var _cancelationTokenSource = new CancellationTokenSource();var token = _cancelationTokenSource.Token;
Task.Factory.StartNew(() =>{token.ThrowIfCancellationRequested();Thread.Sleep(100);token.ThrowIfCancellationRequested();}).ContinueWith(t =>{token.ThrowIfCancellationRequested();DoWork();token.ThrowIfCancellationRequested();}, token);
虽然用 Sleep + ContinueWith
的方式可以实现,但我觉得还不够完美,请问是否有更好的办法?
回答区
valentasm
你可以用 WaitOne
的另一个重载方法: Token.WaitHandle.WaitOne(int32 milliseconds)
, 它比Thread.Sleep(xxx)
如何延迟一个 Task 的执行 ?相关推荐
- .NET 中 如果一个Task A正在await另一个Task B,那么Task A是什么状态
.NET 中 如果一个Task A正在await另一个Task B,那么Task A是什么状态?答案是:WaitingForActivation 新建一个.NET Core控制台程序,输入如下代码: ...
- 一个 Task 不够,又来一个 ValueTask ,真的学懵了!
一:背景 1. 讲故事 前几天在项目中用 MemoryStream 的时候意外发现 ReadAsync 方法多了一个返回 ValueTask 的重载,真是日了狗了,一个 Task 已经够学了,又来一个 ...
- Springboot中上一个定时任务没执行完,是否会影响下一个定时任务执行分析及结论
本文将用测试代码验证:定时任务阻塞问题. 在springboot中使用定时任务的步骤 在启动类上加上注解:@EnableScheduling,表示允许定时任务执行 定时任务需要在类上加上@Compon ...
- Spring task定时任务执行一段时间后莫名其妙停止的问题
前因: 我写了一个小项目,主要功能是用Spring task定时任务每天定时给用户发送邮件.执行了几个月一直没有问题,前几天,莫名其妙的突然不再发送邮件了. 只好花费一些时间来查看到底是什么原因造成的 ...
- shell脚本中判断上一个命令是否执行成功
2018-12-21 shell中使用符号"$?"来显示上一条命令执行的返回值,如果为0则代表执行成功,其他表示失败. 结合if-else语句实现判断上一个命令是否执行成功 示例如 ...
- 一个sql的执行过程详解
作者:猿来是八阿哥 链接:https://www.jianshu.com/p/e2926d6a808f 一个sql的执行过程 一. 组成部分 PDO_MYSQL is a driver that im ...
- 查询优化器内核剖析第四篇:从一个实例看执行计划
查询优化器内核剖析第四篇:从一个实例看执行计划 系列文章索引: 查询优化器内核剖析第一篇 查询优化器内核剖析第二篇:产生候选执行计划&执行计划成本估算 查询优化器内核剖析第三篇:查询的执行与计 ...
- 假定Csomething是一个类,执行下面这些语句后,内存里创建了几个Csomething对象
假定Csomething是一个类,执行下面这些语句后,内存里创建了几个Csomething对象 Csomething a(); Csomething b(2); Csomething c[3]; Cs ...
- sqlite 0转换为bit_Cisco Talos在SQLite中发现了一个远程代码执行漏洞
思科Talos的研究人员在SQLite中发现了一个use-after-free() 的漏洞,攻击者可利用该漏洞在受影响设备上远程执行代码. 攻击者可以通过向受影响的SQLite安装发送恶意SQL命令来 ...
最新文章
- HCNE题库附件、可下载
- ZVM – 记VMP保护代码还原工程
- python语言教程-Python 基础教程
- 初学Ajax相关知识
- 大脑构造图与功能解析_解析地轨、隐藏轨推拉门及折叠门的构造做法,收藏学习...
- h5配合css和js如何自定义单选框
- 去掉viewstate保持在页面中的一大串字符的方法
- 计算机丢失pcdsp.dll,计算机libcef.dll丢失
- 进度条(页面刷新)【原创】
- cmake 简介-初识
- Qt 学习之路 :信号槽
- yum的更多用法和源码编译安装apache
- APP加壳原理及常用脱壳方法介绍
- MFC 资源脚本问题:fatal error CVT1100: 资源重复。类型: AFX DIALOG LAYOUT
- 小学生python编程写游戏_小学生C++趣味编程上下全2册+Python少儿趣味编程适合6-12岁儿童编程教程中小学生计算机程序设计创意零基础游戏编程书籍DK...
- 百度网盘如何免费上传大于4GB的文件(制作BT文件)
- h5实现地图定位签到
- Android 读取csv格式数据文件
- P3084 [USACO13OPEN]照片Photo(差分约束)
- js替换关键词为链接,只替换一次,要避开超链接或图片