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来查看面板了

  1. 基于队列的任务处理


    BackgroundJob.Enqueue(() => this.TestOne());//基于队列的任务处理

  2. 延迟任务执行


    BackgroundJob.Schedule(() => this.TestSchedule(), TimeSpan.FromSeconds(1));

  3. 循环任务执行


    RecurringJob.AddOrUpdate(() => this.TestAddOrUpdate(), Cron.Minutely());

  4. 继续在其父作业完成时执行


    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&lt;AutoGetMovieListJob&gt; logger;
    public AutoGetMovieListJob(ILogger&lt;AutoGetMovieListJob&gt; logger)
    {
    this.logger = logger;
    }
    /// &lt;summary&gt;
    /// Begin 起始时间;Interval执行时间间隔,单位是毫秒
    /// SkipWhileExecuting是否等待上一个执行完成该,true为等待
    /// &lt;/summary&gt;
    [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>
posted @
2019-04-09 22:29 
这种人 
阅读(...) 
评论(...) 
编辑 
收藏

Asp.Ner Core定时任务的更多相关文章

  1. ASP.NET Core 使用 Hangfire 定时任务

    定时任务组件,除了 Hangfire 外,还有一个 Quarz.NET,不过 Hangfire .NET Core 支持的会更好些. ASP.NET Core 使用 Hangfire 很简单,首先,N ...

  2. 解决 ASP.NET Core Hangfire 未授权(401 Unauthorized)

    相关文章:ASP.NET Core 使用 Hangfire 定时任务 ASP.NET Core Hangfire 在正式环境发布之后,如果访问 http://10.1.2.31:5000/hangfi ...

  3. ASP.NET Core 实现带认证功能的Web代理服务器

    引言 最近在公司开发了一个项目,项目部署架构图如下: 思路 如图中文本所述,公司大数据集群不允许直接访问外网,需要一个网关服务器代理请求,本处服务器A就是边缘代理服务器的作用. 通常技术人员最快捷的思 ...

  4. Asp.net Core 2.1新功能Generic Host(通用主机),了解一下

    什么是Generic Host ? 这是在Asp.Net Core 2.1加入了一种新的Host,现在2.1版本的Asp.Net Core中,有了两种可用的Host. Web Host –适用于托管W ...

  5. 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 查看硬 ...

  6. 我的asp.net core目录

    推荐 Asp.NETCore轻松学系列阅读指引目录(asp.net core 2.2) 官方文档翻译 http://www.cnblogs.com/dotNETCoreSG/p/aspnetcore- ...

  7. asp.net core 依赖注入几种常见情况

    先读一篇注入入门 全面理解 ASP.NET Core 依赖注入, 学习一下基本使用 然后学习一招, 不使用接口规范, 直接写功能类, 一般情况下可以用来做单例. 参考https://www.cnblo ...

  8. AServer - 基于Asp.net core Kestrel的超迷你http服务器

    AServer是基于ASP.NET Core Kestrel封装的一个超迷你http服务器.它可以集成进你的Core程序里,用来快速的响应Http请求,而不需要集成整个ASP.NET Core MVC ...

  9. 【转】.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 ...

随机推荐

  1. ThreadState属性

    这个属性代表了线程运行时状态,在不同的情况下有不同的值,我们有时候可以通过对该值的判断来设计程序流程. ThreadState 属性的取值如下: Aborted:线程已停止: AbortRequest ...

  2. December 14th 2016 Week 51st Wednesday

    Everything has its time and that time must be watched. 万物皆有时,时来不可失. Everything has its time, and I r ...

  3. iOS测试基础(命令篇)-iPhone型号及其他信息

    首先安装libimobiledevice和ideviceinstaller brew uninstall ideviceinstaller brew uninstall libimobiledevic ...

  4. wooyun内网渗透教学分享之内网信息探测和后渗透准备

    常规的,从web业务撕开口子url:bit.tcl.comgetshell很简单,phpcms的,一个Phpcms V9 uc api SQL的老洞直接getshell,拿到shell,权限很高,sy ...

  5. iOS--性能优化--保持界面流畅

    卡顿产生的原因和解决方案 在 VSync 信号到来后,系统图形服务会通过 CADisplayLink 等机制通知 App,App 主线程开始在 CPU 中计算显示内容,比如视图的创建.布局计算.图片解 ...

  6. apache、nginx实现反向代理

    一.apache(不推荐): 代理80端口:a. 配置:b. 效果:c. 配置文件参考: ServerRoot "/etc/httpd" Listen 80 ProxyPass / ...

  7. CentOS 安装jira 6.3.6

    java 目录: /usr/java/jdk1.6.0_45 tomcat 目录:/usr/tomcat-7.0.29 jira 目录: /usr/local/jira jira 访问地址: cent ...

  8. LayIM.AspNetCore Middleware 开发日记(六)嵌入资源的使用,layim.config的封装

    前言 距离上一篇博客竟然已经10多天了...工作上的事,个人原因,种种吧.不多说废话,本文将会重点介绍layim的入口配置. LayIM配置 其实在开发者文档里面已经描述的很清楚了.除了几个重要的接口 ...

  9. 小米root

    ROOT之前,需要做几个准备工作: 首先,你需要去MIUI官网解锁,解锁教程见MIUI官网(百度搜索 MIUI解锁,第一个就是),然后根据官方指导进行解锁: 然后,因为MAX2的ROOT是卡刷,所以解 ...

  10. 关于RAM与ROM的区别与理解

    随机存取存储器(random access memory,RAM)又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存).它可以随时读写,而且速度很快,通常作为操作系统或其他正在运 ...