Asp.Ner Core定时任务
AspNet Core定时任务
纪念人类首张黑洞照片发布

第一种方式BackgroundService
基于后台服务类BackgroundService实现,类所在命名空间Microsoft.Extensions.Hosting;添加定时服务类,示例如下
public class ServerTimeA : BackgroundService
{
private readonly ILogger<ServerTimeA> logger;
public ServerTimeA(ILogger<ServerTimeA> logger)
{
this.logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
this.logger.LogInformation("StartA");
while (!stoppingToken.IsCancellationRequested)
{
this.logger.LogWarning("DoworkA...");
await Task.Delay(2000, stoppingToken);
}
this.logger.LogInformation("EndA...");
}
}
public class ServerTimeB : BackgroundService
{
private readonly ILogger<ServerTimeB> logger;
public ServerTimeB(ILogger<ServerTimeB> logger)
{
this.logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
this.logger.LogInformation("StartB");
while (!stoppingToken.IsCancellationRequested)
{
this.logger.LogWarning("DoworkB...");
await Task.Delay(3000, stoppingToken);
}
this.logger.LogInformation("EndB...");
}
}
然后在Startup类中的ConfigureServices方法中添加
services.AddHostedService<ServerTimeA>();
services.AddHostedService<ServerTimeB>();
第二种方式quarzt
第三种方式Hangfire
首先安装Hangfire库
然后再Startup.cs的ConfigureServices函数里面注册服务
services.AddHangfire(config => {
//使用SQLServer持久化存储
config.UseSqlServerStorage(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\Administrator\Documents\haiwell.mdf;Integrated Security=True;Connect Timeout=30");
});
然后再Configure中添加
app.UseHangfireDashboard();//启用Hangfire控制面板
app.UseHangfireServer();//启用Hangfire服务
而后就可以访问localhost:5000/Hangfire来查看面板了
基于队列的任务处理
BackgroundJob.Enqueue(() => this.TestOne());//基于队列的任务处理
延迟任务执行
BackgroundJob.Schedule(() => this.TestSchedule(), TimeSpan.FromSeconds(1));
循环任务执行
RecurringJob.AddOrUpdate(() => this.TestAddOrUpdate(), Cron.Minutely());
继续在其父作业完成时执行
string id = BackgroundJob.Enqueue(() => Console.WriteLine("Hello"));
BackgroundJob.ContinueJobWith(id, () => Console.WriteLine("World!"));
</li>
</ol>
</div>
</div>
<h2 class="text-primary">第四种方式TimedJob</h2>
<div>
<p>Pomelo.AspNetCore.TimedJob是一个.Net Core实现的定时任务job库,支持毫秒级定时任务</p>
<p>首先安装对应的包:Pomelo.AspNetCore.TimedJob</p>
<p>然后在Startup.cs的ConfigureServices函数里面注册服务</p>
<code>services.AddTimedJob();</code>
<p>然后在Configure中添加</p>
<code>app.UseTimedJob();</code>
<p>添加一个定时执行类,继承Job类</p>
<pre>
public class AutoGetMovieListJob:Job
{
private readonly ILogger<AutoGetMovieListJob> logger;
public AutoGetMovieListJob(ILogger<AutoGetMovieListJob> logger)
{
this.logger = logger;
}
/// <summary>
/// Begin 起始时间;Interval执行时间间隔,单位是毫秒
/// SkipWhileExecuting是否等待上一个执行完成该,true为等待
/// </summary>
[Invoke(Begin = "2019-04-10 20:40", Interval = 1000 * 3, SkipWhileExecuting = true)]
public void Run()
{
this.logger.LogError($"开始执行了!{DateTime.Now}");
}
[Invoke(Begin = "2019-04-10 20:45", Interval = 1000 * 4, SkipWhileExecuting = true)]
public void TestA()
{
this.logger.LogError($"TestA 首张黑洞照片问世!{DateTime.Now}");
}
}
</pre>
</div>
</div>
</div>
Asp.Ner Core定时任务的更多相关文章
- ASP.NET Core 使用 Hangfire 定时任务
定时任务组件,除了 Hangfire 外,还有一个 Quarz.NET,不过 Hangfire .NET Core 支持的会更好些. ASP.NET Core 使用 Hangfire 很简单,首先,N ...
- 解决 ASP.NET Core Hangfire 未授权(401 Unauthorized)
相关文章:ASP.NET Core 使用 Hangfire 定时任务 ASP.NET Core Hangfire 在正式环境发布之后,如果访问 http://10.1.2.31:5000/hangfi ...
- ASP.NET Core 实现带认证功能的Web代理服务器
引言 最近在公司开发了一个项目,项目部署架构图如下: 思路 如图中文本所述,公司大数据集群不允许直接访问外网,需要一个网关服务器代理请求,本处服务器A就是边缘代理服务器的作用. 通常技术人员最快捷的思 ...
- Asp.net Core 2.1新功能Generic Host(通用主机),了解一下
什么是Generic Host ? 这是在Asp.Net Core 2.1加入了一种新的Host,现在2.1版本的Asp.Net Core中,有了两种可用的Host. Web Host –适用于托管W ...
- Centos7 编译安装 Nginx Mariadb Asp.net Core2 (实测 笔记 Centos 7.3 + Openssl 1.1.0h + Mariadb 10.3.7 + Nginx 1.14.0 + Asp.net. Core 2 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- 我的asp.net core目录
推荐 Asp.NETCore轻松学系列阅读指引目录(asp.net core 2.2) 官方文档翻译 http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore- ...
- asp.net core 依赖注入几种常见情况
先读一篇注入入门 全面理解 ASP.NET Core 依赖注入, 学习一下基本使用 然后学习一招, 不使用接口规范, 直接写功能类, 一般情况下可以用来做单例. 参考https://www.cnblo ...
- AServer - 基于Asp.net core Kestrel的超迷你http服务器
AServer是基于ASP.NET Core Kestrel封装的一个超迷你http服务器.它可以集成进你的Core程序里,用来快速的响应Http请求,而不需要集成整个ASP.NET Core MVC ...
- 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生
[转].NET(C#):浅谈程序集清单资源和RESX资源 目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...
随机推荐
- ThreadState属性
这个属性代表了线程运行时状态,在不同的情况下有不同的值,我们有时候可以通过对该值的判断来设计程序流程. ThreadState 属性的取值如下: Aborted:线程已停止: AbortRequest ...
- December 14th 2016 Week 51st Wednesday
Everything has its time and that time must be watched. 万物皆有时,时来不可失. Everything has its time, and I r ...
- iOS测试基础(命令篇)-iPhone型号及其他信息
首先安装libimobiledevice和ideviceinstaller brew uninstall ideviceinstaller brew uninstall libimobiledevic ...
- wooyun内网渗透教学分享之内网信息探测和后渗透准备
常规的,从web业务撕开口子url:bit.tcl.comgetshell很简单,phpcms的,一个Phpcms V9 uc api SQL的老洞直接getshell,拿到shell,权限很高,sy ...
- iOS--性能优化--保持界面流畅
卡顿产生的原因和解决方案 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建.布局计算.图片解 ...
- apache、nginx实现反向代理
一.apache(不推荐): 代理80端口:a. 配置:b. 效果:c. 配置文件参考: ServerRoot "/etc/httpd" Listen 80 ProxyPass / ...
- CentOS 安装jira 6.3.6
java 目录: /usr/java/jdk1.6.0_45 tomcat 目录:/usr/tomcat-7.0.29 jira 目录: /usr/local/jira jira 访问地址: cent ...
- LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装
前言 距离上一篇博客竟然已经10多天了...工作上的事,个人原因,种种吧.不多说废话,本文将会重点介绍layim的入口配置. LayIM配置 其实在开发者文档里面已经描述的很清楚了.除了几个重要的接口 ...
- 小米root
ROOT之前,需要做几个准备工作: 首先,你需要去MIUI官网解锁,解锁教程见MIUI官网(百度搜索 MIUI解锁,第一个就是),然后根据官方指导进行解锁: 然后,因为MAX2的ROOT是卡刷,所以解 ...
- 关于RAM与ROM的区别与理解
随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存).它可以随时读写,而且速度很快,通常作为操作系统或其他正在运 ...