当前位置: 首页 > news >正文

示范校建设验收网站网络营销大赛策划书

示范校建设验收网站,网络营销大赛策划书,中小型企业网络建设,做站群网站好优化吗目录 创建简易控制台定时任务步骤完整程序 创建简易控制台定时任务 创建winform的可以看:https://blog.csdn.net/wayhb/article/details/134279205 步骤 创建控制台程序 使用vs2019新建项目,控制台程序,使用.net4.7.2项目右键&#xff08…

目录

  • 创建简易控制台定时任务
    • 步骤
    • 完整程序

创建简易控制台定时任务

  • 创建winform的可以看:https://blog.csdn.net/wayhb/article/details/134279205

步骤

  1. 创建控制台程序
  • 使用vs2019
  • 新建项目,控制台程序,使用.net4.7.2
  • 项目右键(管理NuGet程序包),搜索Quartz,安装
    在这里插入图片描述
  1. 使用Quartz.Net官网示例运行程序
  • 打开官网https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html#trying-out-the-application,在程序入库Program.cs粘贴官网示例
//出现错误右键修复,自动添加包
using Quartz;
using Quartz.Impl;
using Quartz.Logging;
using System;
using System.Threading.Tasks;namespace ConsoleSkWork
{class Program{private static async Task Main(string[] args){LogProvider.SetCurrentLogProvider(new ConsoleLogProvider());// Grab the Scheduler instance from the FactoryStdSchedulerFactory factory = new StdSchedulerFactory();IScheduler scheduler = await factory.GetScheduler();// and start it offawait scheduler.Start();// define the job and tie it to our HelloJob classIJobDetail job = JobBuilder.Create<HelloJob>().WithIdentity("job1", "group1").Build();// Trigger the job to run now, and then repeat every 10 secondsITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartNow().WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever()).Build();// Tell Quartz to schedule the job using our triggerawait scheduler.ScheduleJob(job, trigger);// some sleep to show what's happeningawait Task.Delay(TimeSpan.FromSeconds(60));// and last shut down the scheduler when you are ready to close your programawait scheduler.Shutdown();Console.WriteLine("Press any key to close the application");Console.ReadKey();}// simple log provider to get something to the console//https://www.quartz-scheduler.net/documentation/quartz-3.x/quick-start.html#trying-out-the-applicationprivate class ConsoleLogProvider : ILogProvider{public Logger GetLogger(string name){return (level, func, exception, parameters) =>{if (level >= LogLevel.Info && func != null){Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] [" + level + "] " + func(), parameters);}return true;};}public IDisposable OpenNestedContext(string message){throw new NotImplementedException();}public IDisposable OpenMappedContext(string key, object value, bool destructure = false){throw new NotImplementedException();}}}public class HelloJob : IJob{public async Task Execute(IJobExecutionContext context){await Console.Out.WriteLineAsync("Greetings from HelloJob!");}}
}
  • 运行控制台程序
    在这里插入图片描述
    说明:
    info是日志插件输出的
    hellojob就是任务触发的
  1. 添加触发监听器
  • 触发监听器是用于监听触发器的
  • 添加触发监听器可以在任务执行前后执行其他动作,例如输出下一次该任务执行时间
  • 触发监听器官网解释:https://www.quartz-scheduler.net/documentation/quartz-3.x/tutorial/trigger-and-job-listeners.html
  • 继承触发监听器接口有4个方法需要实现
//触发器执行前
public async Task TriggerFired(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default)
{}
// 判断作业是否继续(true继续,false本次不触发)
public async Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default)
{}
//  触发完成
public async Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default)
{}
// 触发失败
public async Task TriggerMisfired(ITrigger trigger, CancellationToken cancellationToken = default)
{}
  • 主程序中添加触发监听器
           // 将trigger监听器注册到调度器scheduler.ListenerManager.AddTriggerListener(new CustomTriggerListener());

完整程序

  • Program.cs
using System;
using System.Threading.Tasks;using Quartz;
using Quartz.Impl;
using Quartz.Logging;namespace ConsoleApp1
{public class Program{private static async Task Main(string[] args){LogProvider.SetCurrentLogProvider(new ConsoleLogProvider());// Grab the Scheduler instance from the FactoryStdSchedulerFactory factory = new StdSchedulerFactory();IScheduler scheduler = await factory.GetScheduler();// and start it offawait scheduler.Start();// define the job and tie it to our HelloJob classIJobDetail job = JobBuilder.Create<HelloJob>().WithIdentity("job1", "group1").Build();// Trigger the job to run now, and then repeat every 10 secondsITrigger trigger = TriggerBuilder.Create().WithIdentity("trigger1", "group1").StartNow().WithSimpleSchedule(x => x.WithIntervalInSeconds(10).RepeatForever()).Build();// 将trigger监听器注册到调度器scheduler.ListenerManager.AddTriggerListener(new CustomTriggerListener());// Tell Quartz to schedule the job using our triggerawait scheduler.ScheduleJob(job, trigger);// some sleep to show what's happeningawait Task.Delay(TimeSpan.FromSeconds(60));// and last shut down the scheduler when you are ready to close your programawait scheduler.Shutdown();Console.WriteLine("Press any key to close the application");Console.ReadKey();}// simple log provider to get something to the consoleprivate class ConsoleLogProvider : ILogProvider{public Logger GetLogger(string name){return (level, func, exception, parameters) =>{if (level >= LogLevel.Info && func != null){Console.WriteLine("[" + DateTime.Now.ToLongTimeString() + "] [" + level + "] " + func(), parameters);}return true;};}public IDisposable OpenNestedContext(string message){throw new NotImplementedException();}public IDisposable OpenMappedContext(string key, object value, bool destructure = false){throw new NotImplementedException();}}}public class HelloJob : IJob{public async Task Execute(IJobExecutionContext context){//获取当前时间DateTime currentDateTime = DateTime.UtcNow;await Console.Out.WriteLineAsync("当前日期和时间:" + currentDateTime.AddHours(8));}}
}
  • CustomTriggerListener.cs
using Quartz;
using System;
using System.Threading;
using System.Threading.Tasks;namespace ConsoleApp1
{//继承监听器接口public class CustomTriggerListener : ITriggerListener{public string Name => "CustomTriggerListener";//触发器执行前public async Task TriggerFired(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default){Console.WriteLine("【*********************************************】");Console.WriteLine($"【{Name}】---【TriggerFired】-【触发】");await Task.CompletedTask;}// 判断作业是否继续(true继续,false本次不触发)public async Task<bool> VetoJobExecution(ITrigger trigger, IJobExecutionContext context, CancellationToken cancellationToken = default){Console.WriteLine($"【{Name}】---【VetoJobExecution】-【判断作业是否继续】-{true}");return await Task.FromResult(cancellationToken.IsCancellationRequested);}//  触发完成public async Task TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode, CancellationToken cancellationToken = default){Console.WriteLine($"【{Name}】---【TriggerComplete】-【触发完成】");//获取下次执行日期时间UTC,将UTC时间转换成北京时间DateTimeOffset dd = (DateTimeOffset)trigger.GetNextFireTimeUtc();Console.WriteLine("【下次执行时间:】"+dd.DateTime.AddHours(8));await Task.CompletedTask;}// 触发失败public async Task TriggerMisfired(ITrigger trigger, CancellationToken cancellationToken = default){Console.WriteLine($"【{Name}】---【TriggerMisfired】【触发作业】");await Task.CompletedTask;}}}
http://www.hkea.cn/news/723101/

相关文章:

  • 做论坛网站需要什么备案新站seo优化快速上排名
  • 动漫网站html百度网盘搜索
  • 怎么看一个网站什么语言做的宝鸡seo培训
  • 数据库网站建设公司他达拉非片
  • 英文商城网站建设搜索引擎营销的特点
  • 易优建站系统图片百度搜索
  • 网站开发不用框架web网站设计
  • 技能网站建设项目需求武汉网络推广外包公司
  • 安卓市场下载手机版优化网站排名技巧
  • 建设网站平台哪个好互联网营销外包推广
  • 工商注册企业名称查询广东seo网站推广代运营
  • 中纪委网站两学一做征文资源平台
  • java高端网站建设现在广告行业好做吗
  • wordpress 制作下载优化关键词怎么做
  • 宁波网站建设哪个公司好百度爱采购推广怎么入驻
  • 重庆市建设工程信息网特种作业企业网站seo多少钱
  • 域名备案做电影网站制作免费个人网站
  • 公司网络营销方案优化设计七年级上册数学答案
  • 网站建设策划方案网址搜索引擎
  • 艺术培训学校系统网站怎么做百度优化是什么
  • 自己的网站做飘窗百度推广账号登录入口
  • 国内好的网站建设国内外十大免费crm软件推荐
  • 淄博品质网站建设百度销售推广
  • 网站建设学习内容网站模板哪家好
  • 建立b2b网站成本微信营销平台系统
  • 学做衣服网 缤纷网站手机百度ai入口
  • 点餐系统网站建设画质优化app下载
  • 上海都有哪些企业公司seo网站seo
  • 进一步加强政府网站建设网站建设介绍ppt
  • 做网站的设计软件上海seo推广外包