DotNetCore 定时服务 HangFire

# DotNetCore 定时服务 HangFire

最近在写一个Asp.net core 的项目,其中有用到定时任务,一开始准备要用Quartz.net。毕竟在Java中和.net framework中都表现突出。

但是看了一下Quartz.net 关于Asp.net core 的文档之后决定换一个定时任务框架,于是我选择了HangFire。

开发工具:visual studio code

环境:.net core 2.0

①创建一个asp.net core mvc项目:在vs code打开一个空文件夹,然后用Ctrl+、(或点击上方的 查看?集成终端)打开 终端 输入:dotnet new mvc

②安装HangFire 在 终端 输入:dotnet add package HangFire

③打开Startup文件,导入依赖项:using HangFire;

注意:这个定时框架需要使用数据库,如果你用的是mssql 就不要单独引数据库的包了,否则需要单独添加,比如dotnet add package Hangfire.Pro.Redis;

④在ConfigureServices中添加数据库引擎
```
publicvoidConfigureServices(IServiceCollection services)

        {

            services.AddHangfire(r =>r.UseSqlServerStorage(@"Server=(localdb)\MSSQLLocalDB; Database=HangFire; Trusted\_Connection=True;"));

            services.AddMvc();

        }
```
⑤然后在Configure启动服务 启动框架 添加定时任务

即添加

app.UseHangfireServer();

app.UseHangfireDashboard();

RecurringJob.AddOrUpdate();

publicvoidConfigure(IApplicationBuilder app, IHostingEnvironment env)

        {

            if (env.IsDevelopment())

            {

                app.UseDeveloperExceptionPage();

            }

            else

            {

                app.UseExceptionHandler("/Home/Error");

            }

            app.UseHangfireServer();

            app.UseHangfireDashboard();

            //定时任务

            RecurringJob.AddOrUpdate(() =>newCommon.Weather(), Cron.Daily);

            app.UseStaticFiles();

            app.UseMvc(routes =>

            {

                routes.MapRoute(

                    name: "default",

                    template: "{controller=Home}/{action=Index}/{id?}");

            });

        }

注释:

Common是我的一个工具类,Weather是我需要定时执行的方法;

Cron.Daily表是每天执行一次;

另外定时任务执行方式有很多种,添加、延迟、重复等等 Cron表达式也多种多样

任务执行方式: [http://docs.hangfire.io/en/latest/quick-start.html](http://docs.hangfire.io/en/latest/quick-start.html)

Cron表达式: [https://en.wikipedia.org/wiki/Cron#CRON\_expression](https://en.wikipedia.org/wiki/Cron#CRON_expression)

如果用vs code的话在调试之前千万不要执行 dotnet restore或dotnet build

原文地址:https://www.cnblogs.com/hoyu/p/8378156.html

时间: 2024-10-07 12:35:37

DotNetCore 定时服务 HangFire的相关文章

LBPL--基于Asp.net、 quartz.net 快速开发定时服务的插件化项目

LBPL 这一个基于Asp.net. quartz.net 快速开发定时服务的插件化项目 由于在实际项目开发中需要做定时服务的操作,大体上可以理解为:需要动态化监控定时任务的调度系统. 为了实现快速开发.简单明了完成一个服务,不再繁琐的进行各种代码耦合度强的操作,设计了一个以暂时以quartz.net 为服务载体,插件化开发的模式. github地址:https://github.com/linbin524/LBPL 由于工作比较忙,暂时更新部分,后续会将相关的开发文档更新. 主要开发流程 1.

简单的.NET后台定时服务框架

后台服务只要是有一定经验的开发人员都接触过,其中离不开服务创建,调度逻辑处理,业务逻辑编写等环节.往往我们在新建一个后台服务项目的时候都会去拷贝以前的代码,再写一些线程等方式去完成,然后又去处理服务的安装问题.大部分时间都是浪费在这些重复的工作上. 这里提供的是一个简单的后台服务处理框架,简单的后台服务处理框支持(按指定间隔时间执行:每天指定时间执行每天一次:指定时间执行一次:每天指定开始和结束时间并且按照指定间隔时间执行),开发新的定时服务任务时,只需要实现抽象类的方法.添加任务配置以及运行安

Spring MVC定时服务

spring-mvc-config.xml <context:component-scan base-package="com.bf" ></context:component-scan> <task:annotation-driven /> <mvc:annotation-driven /> spring-core-config.xml <context:component-scan base-package="com.

Python循环定时服务功能(类似contrab)

Python实现的循环定时服务功能,类似于Linux下的contrab功能.主要通过定时器实现. 注:Python中的threading.timer是基于线程实现的,每次定时事件产生时,回调完响应函数后线程就结束.而Python中的线程是不能restart的,所以这种循环定时功能必须要在每次定时响应完成后再重新启动另一个定时事件. #!/usr/bin/env python # -*- coding: utf-8 -*- # import subprocess from threading im

使用框架的php如果使用定时服务Cronjob

工作需要用php开发了个监控的小程序,既然是监控就需要定时执行. 之前我用的是chrome加个定时刷新的小插件,放在服务器上运行,也能实现,就是别扭. 通用正规的做法应该是:linux上的Cron和windows上的计划任务.使用php.exe执行脚本,win中还要多写个bat文件,很多文章中有提及. 个人不习惯用ignore_user_abort(true) 但存在一个问题,就是执行的php文件只能是简单的脚本,不能使用框架,因为框架的相对目录路径导致运行出错.既然是监控程序,肯定要用到数据库

EJB3.0 定时服务:Timer Service

定时服务用作在一段特定的时间后执行某段程序 使用容器对象SessionContext创建定时器,并使用@Timeout 注释声明定时器方法 通过依赖注入@Resource SessionContext ctx,获得SessionContext对象,调用ctx.getTimerService().createTimer(Date arg0, long arg1, Serializable arg2)方法创建定时器, 当定时器创建完成后,还需声明定时器方法.定时器方法的声明很简单,只需在方法上面加入

VS2015 C#.net4.6 windows的定时服务

1.创建项目 C#->经典桌面->windows服务 2.创建定时服务 找到服务1,自动生成了 OnStart(服务开启时运行),OnStop(服务关闭时运行)两个函数,我们需要在开启时新建定时器与绑定执行函数 protected override void OnStart(string[] args) { timer1 = new System.Timers.Timer(); timer1.Interval = 3000; //设置计时器事件间隔执行时间 timer1.Elapsed +=

标准app基础模板建立-活动管理-定时服务-键值对存储-日志工具

一.建立工程 1.建立一个空白的工程,名称为ModelApp. 2.在main-java下新建package,起名com.jiaweiqiang.tools,用于放置通用工具类. 二.建立得到全局变量的Application类 1.在tools中新建MyApplication类,用于存储全局context和其他程序需要的通用变量. public class MyApplication extends Application { private static Context context; pr

使用Quartz.NET创建window定时服务(二)

今天就开始介绍怎么使用Quartz.NET来创建基于时间的定时服务,Quartz.NET我们不仅可以用在服务里.控制台.web.窗体.wpf等都是可以的.在本项目中就放在服务里. 第一步:我们在vs的NuGet里获取Quartz.NET,这里采用的是2.62版本,目前是最高版本是3.0.5.之所以不用最高版本,是因为自2.6.2版本以后,使用方式就改变了,我们暂时使用2.6.2 2.这里有一个坑,有些时候,版本信息默认是在下面的,如图左,我们这时候,把Quartz放在第一个,如右图 3.建立一个