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. 网站url常见报错

    报错情况比较复杂,此处列出比较常见的几种报错内容: 报错: 报错是一个大类, 的报错基本上是权限问题,出现 报错时您需要检测权限配置问题. 403.1 错误是由于“执行”访问被禁止而造成的.若试图从目 ...

  2. 使用 Nginx 对 ASP.NETCore网站 或 Docker 等进行反向代理,宝塔面板对 ASP.NET Core 反向代理

    1,Nginx 的 配置文件 Nginx 可以配置反向代理.负载均匀等, 其默认配置文件名为 nginx.conf . 一般存放于 /你的安装目录/nginx/conf  下 Nginx 加载配置信息 ...

  3. codeforces 666C Codeword

    codeforces 666C Codeword 题意 q个询问,一种询问是给你一个字符串,还有一种是问长度为n的,包含当前字符串为子序列的字符串有多少个. 题解 容易写出式子,但是不好化简. 观察一 ...

  4. 如何在windows下用IDA优雅调试ELF

    在windows下如何用IDA优雅调试ELF brief: 构建一个IDA-linux_server-docker镜像,优雅地IDA远程调试 使用传统虚拟机来运行一个linux程序就得跑一个完整的li ...

  5. css3—产品列表之鼠标滑过效果

    <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8" /> <title&g ...

  6. spring整合mongo及调用

    spring整合mongo(maven工程下): 1.web.xml文件中配置需要加载的配置文件: <listener> <listener-class>org.springf ...

  7. pprint的惊喜

    因为我个人经常喜欢打印dir来看模块的方法,每次都是for循环换行,这个真好用 import pprint pprint.pprint (dir(pprint)) 执行下面的代码,会发现,没有自动换行 ...

  8. PHPStorm配置xdebug(phpStudy/wamp)

    一.下载并配置XDebug wamp环境: 1.获取xdebug

  9. vue每次请求加头部(shiro+vue)

    前后台分离,全局请求加头部 设置全局请求为ajax请求 _axios.interceptors.request.use( function(config) { var accessToken = lo ...

  10. HDU 1224 Free DIY Tour(spfa求最长路+路径输出)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1224 Free DIY Tour Time Limit: 2000/1000 MS (Java/Oth ...