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 ...
随机推荐
- 9、django
django是一款功能强大的web框架 自带admin后台管理.session.ORM.form验证功能.用户auth验证.模板引擎.simple tag.过滤器 Django RESTful fra ...
- SQL server reporting service - rsReportServerNotActivated error solution
描述: 今天在原有的数据库版本上增加了Reporting Service 功能,数据库完成安装后,没有发现ReportServer和 ReportServerTemp 两个数据库 于是从其他服务器上, ...
- ZT extern "C"的用法解析
extern "C"的用法解析 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同. ...
- JVM垃圾收集算法的选择
1. 介绍 JVM提供了多种垃圾收集器,应该根据应用选择一种合适的垃圾收集器. 垃圾回收管理内存通过如下操作: 在年轻代分配对象,把年龄大的对象晋升到老年代. 当年老代超过阈值的时候,并发标记收集. ...
- video文件格式说明(笔记)
video标签兼容IE8可使用html5media.js,具体demo可以下载文件中的压缩包 移动端兼容参考: http://www.xyhtml5.com/3252.html
- windows系统安装erlang
1.什么是erlang erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境.Erlang是一个结构 ...
- Loadrunner测试webservice协议总结
Loadrunner测试webservice协议总结 一.协议选择 1.打开Virtual user generator,新建脚本,选择webservice协议
- Fiddler模拟Http请求
Fiddler模拟Http请求 一.自定义Http请求:
- git删除指定文件夹
1.在本地仓库删除指定文件 git rm 文件名名称 2.在本地仓库删除指定文件夹 git rm -r 文件夹/ 3.提交修改 git commit -m"删除文件夹" 4.推送到 ...
- MongoDB常用指令
db 查看当前操作的数据库 show dbs 显示所有数据库 show collections 显示当前数据库下的所有集合 use database_name 连接到一个名叫[database_nam ...