需要知道以下的知识

正规的骚操作: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超时规则的更多相关文章

  1. 深入理解gradle中的task

    目录 简介 定义task tasks 集合类 Task 之间的依赖 定义task之间的顺序 给task一些描述 task的条件执行 task rule Finalizer tasks 总结 深入理解g ...

  2. async/await Task Timeout

    async/await Task Timeout 在日常的电脑使用过程中,估计最难以忍受的就是软件界面"卡住""无响应",在我有限的开发生涯中一直都是在挑战 它 ...

  3. [php]配置文件中的超时时间

    概要 php.ini l  max_execution_time l  max_input_time php-fpm.conf l  process_control_timeout l  reques ...

  4. 一文了解 Hadoop 运行机制

    大数据技术栈在当下已经是比较成熟的了,Hadoop 作为大数据存储的基石,其重要程度不言而喻,作为一个想从 java 后端转向大数据开发的程序员来说,打好 Hadoop 基础,就相当于夯实建造房屋的地 ...

  5. 应用监控CAT之cat-consumer源码阅读(二)

    之前讲了 cat-client 进行cat埋点上报,那么上报给谁呢?以及后续故事如何?让我们来看看 cat-consumer 是如何接收处理的? 由cat-client发送数据,cat-consume ...

  6. 大数据入门第九天——MapReduce详解(六)MR其他补充

    一.自定义in/outputFormat 1.需求 现有一些原始日志需要做增强解析处理,流程: 1. 从原始日志文件中读取数据 2. 根据日志中的一个URL字段到外部知识库中获取信息增强到原始日志 3 ...

  7. 多线程-ThreadPoolExecutor

    线程池 线程池是可以控制线程创建.释放.并通过某种策略尝试复用线程去执行任务的一种管理框架,从而实现线程资源与任务之间的一种平衡. 类图 Executor Executor是最基本的执行接口:“执行者 ...

  8. (转)hadoop 配置文件解释

    借鉴:https://blog.csdn.net/wangming520liwei/article/details/78923216 Hadoop 参数配置 详解 一.常用端口 组件 节点 默认端口 ...

  9. 大数据学习笔记之Hadoop(三):MapReduce&YARN

    文章目录 一 MapReduce概念 1.1 为什么要MapReduce 1.2 MapReduce核心思想 1.3 MapReduce进程 1.4 MapReduce编程规范(八股文) 1.5 Ma ...

随机推荐

  1. Requests接口测试(五)

    使用python+requests编写接口测试用例 好了,有了前几章的的基础,写下来我把前面的基础整合一下,来一个实际的接口测试练习吧. 接口测试流程 1.拿到接口的URL地址 2.查看接口是用什么方 ...

  2. springboot-条件化注解

    在项目中,有时会遇到我们的Configuration.Bean.Service等等的bean组件需要依条件按需加载的情况.那么Spring Boot怎么做的呢?它为此定义了许多有趣的条件,当我们将它们 ...

  3. Java String 常用类的使用方法

    public static void main(String[] args) { // TODO Auto-generated method stub /* * 使用for循环遍历数组 * int a ...

  4. HTML5+CSS3从入门到精通随书光盘 ISO 镜像视频教程​

    HTML5+CSS3从入门到精通(清华社“视频大讲堂”大系)通过基础知识+中小实例+综合案例的方式,讲述了用HTML5+ CSS3设计构建网站的必备知识,相对于权威指南.高级程序设计.开发指南同类图书 ...

  5. c#后台弹出框

    ClientScript.RegisterStartupScript(this.GetType(), "message", "<script>alert('提 ...

  6. C#多线程编程实战1.7前台线程和后台线程

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  7. Vue watch用法

    Vue.js 提供了一个方法 watch,它用于观察Vue实例上的数据变动.对应一个对象,键是观察表达式,值是对应回调.值也可以是方法名,或者是对象,包含选项. 例如,同一个组件切换时,不会触发生命周 ...

  8. angular 输入属性

    import { Component, OnInit, Input } from '@angular/core'; @Component({ selector: 'app-order', templa ...

  9. Kylin存储和查询的分片问题

    本文来自网易云社区 作者:汪胜 相关概念介绍 为了了解Kylin存储和查询的分片问题,需要先介绍两个重要概念:segment和cuboid.相信大数据行业的相关同学都不陌生.Kylin每次提交一个新的 ...

  10. PHP+JQuery实现ajax跨域

    jQuery实现ajax跨域 1.dataType:'jsonp'2.type: 'get'3.把要传的参数以url方式传出去  url:'http://gameapi.feiliu.com/lqzg ...