C# Task超时规则
需要知道以下的知识
正规的骚操作:https://stackoverflow.com/questions/4238345/asynchronously-wait-for-taskt-to-complete-with-timeout
参考资料:https://walterlv.com/post/task-wait-async-with-timeout.html#%E5%8F%82%E8%80%83%E8%B5%84%E6%96%99
开始我们的讲解吧
假如我们需要这样的游戏规则,在规定的时间内没有完成有关功能,就自动提示超时。
为了保证这个功能足够简单又能够说明清楚,我们加入朴素的素数判定
private static bool IsPrime(long num)
{
bool isPrime = false;
if (num == )
{
return true;
}
for (var i = ; i < num; i++)
{
if (num % i != ) continue;
isPrime = true;
break;
}
return isPrime;
} private static int ForPrime(int num)
{
int numPrime = ;
for (var i = ; i <= num; i++)
{
numPrime += IsPrime(i)? : ;
}
return numPrime;
} public static async Task<int> PrimeTask()
{
int val = await Task.Run(() => ForPrime()); return val;
}
虽然不知道处理100000个数字耗时多少,但肯定1s是跑不完的,so。。。如果我们需要在它超过1s之后提示呢,随便提示啥都行。
public static async Task<bool> TimeTask()
{
var task = PrimeTask();
int timeout = ;
if (await Task.WhenAny(task, Task.Delay(timeout)) == task)
{
return true;
} return false;
}
代码说明一下就是1s内处理完毕就返回true,否则就是false。
static void Main(string[] args)
{
Task<bool> t = TimeTask();
Console.WriteLine(t.Result);
Console.ReadKey();
}
最后简单的超时机制就弄好了~~
C# Task超时规则的更多相关文章
- 深入理解gradle中的task
目录 简介 定义task tasks 集合类 Task 之间的依赖 定义task之间的顺序 给task一些描述 task的条件执行 task rule Finalizer tasks 总结 深入理解g ...
- async/await Task Timeout
async/await Task Timeout 在日常的电脑使用过程中,估计最难以忍受的就是软件界面"卡住""无响应",在我有限的开发生涯中一直都是在挑战 它 ...
- [php]配置文件中的超时时间
概要 php.ini l max_execution_time l max_input_time php-fpm.conf l process_control_timeout l reques ...
- 一文了解 Hadoop 运行机制
大数据技术栈在当下已经是比较成熟的了,Hadoop 作为大数据存储的基石,其重要程度不言而喻,作为一个想从 java 后端转向大数据开发的程序员来说,打好 Hadoop 基础,就相当于夯实建造房屋的地 ...
- 应用监控CAT之cat-consumer源码阅读(二)
之前讲了 cat-client 进行cat埋点上报,那么上报给谁呢?以及后续故事如何?让我们来看看 cat-consumer 是如何接收处理的? 由cat-client发送数据,cat-consume ...
- 大数据入门第九天——MapReduce详解(六)MR其他补充
一.自定义in/outputFormat 1.需求 现有一些原始日志需要做增强解析处理,流程: 1. 从原始日志文件中读取数据 2. 根据日志中的一个URL字段到外部知识库中获取信息增强到原始日志 3 ...
- 多线程-ThreadPoolExecutor
线程池 线程池是可以控制线程创建.释放.并通过某种策略尝试复用线程去执行任务的一种管理框架,从而实现线程资源与任务之间的一种平衡. 类图 Executor Executor是最基本的执行接口:“执行者 ...
- (转)hadoop 配置文件解释
借鉴:https://blog.csdn.net/wangming520liwei/article/details/78923216 Hadoop 参数配置 详解 一.常用端口 组件 节点 默认端口 ...
- 大数据学习笔记之Hadoop(三):MapReduce&YARN
文章目录 一 MapReduce概念 1.1 为什么要MapReduce 1.2 MapReduce核心思想 1.3 MapReduce进程 1.4 MapReduce编程规范(八股文) 1.5 Ma ...
随机推荐
- 9-python 的ProxyHandler处理器(代理设置)
ProxyHandler处理器(代理设置) 使用代理IP,这是爬虫/反爬虫的第二大招,通常也是最好用的. 很多网站会检测某一段时间某个IP的访问次数(通过流量统计,系统日志等),如果访问次数多的不像正 ...
- java就业指南 zookeeper分布式系统 zookeeper实现分布式锁 有用
目前几乎很多大型网站及应用都是分布式部署的,分布式场景中的数据一致性问题一直是一个比较重要的话题.分布式的CAP理论告诉我们“任何一个 分布式系统都无法同时满足一致性(Consistency).可用性 ...
- linux安全关机脚本
linux安全关机脚本 在断电4分钟后判断关键 目的:在断电以后服务器连接UPS,UPS最多只能支持5分钟也会没电,所以在这里做个判断,如果断电4分钟后,市电还没来就关机. 以下两个设备为两个下路由器 ...
- Luogu 4091 [HEOI2016/TJOI2016]求和
BZOJ 4555 一道模板题. 第二类斯特林数有公式: $$S(n, m) = \frac{1}{m!}\sum_{i = 0}^{m}(-1)^i\binom{m}{i}(m - i)^n$$ 考 ...
- Jmeter接口测试-完成任务API
完成任务 PUT /api/tasks/:task_id 可以完成id为task_id的task,如果动作成功,该接口返回的task的done字段会变成true. 完成任务的api接口测试很简单,因为 ...
- OSG3.2+Qt5.2.1+VS2012+OSGEarth 2.5编译问题记录
问题1:CMake Error at D:/Qt/Qt5.2.1/5.2.1/msvc2012_64_opengl/lib/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake: ...
- HDU 6034 Balala Power! (贪心+坑题)
题意:给定一个 n 个字符串,然后问你怎么给 a-z赋值0-25,使得给定的字符串看成26进制得到的和最大,并且不能出现前导0. 析:一个很恶心的题目,细节有点多,首先是思路,给定个字符一个权值,然后 ...
- TriggerAction扩展----ExInvokeCommandAction
Wp&Win8中使用命令绑定时,除了Button控件自带命令绑定,其他的时候是用Interactivity库中的InvokeCommandAction实现的(Win8 需要额外安装第三方NuG ...
- angular OnChange事件
import { Component, OnInit, Input, OnChanges, SimpleChanges } from '@angular/core'; @Component({ sel ...
- EF 热加载 Winform/Asp.net
public partial class Form1 : Form { BackgroundWorker worker = new BackgroundWorker(); xxContext cont ...