首页 > 其他分享 >在WinForms中的使用FluentScheduler实现定时任务

在WinForms中的使用FluentScheduler实现定时任务

时间:2024-03-15 10:25:56浏览次数:24  
标签:void public Application WinForms UI Query FluentScheduler 定时

 

在WinForm程序中使用 FluentScheduler框架实现一个多任务的定时执行功能。

 

1、使用Nuget 安装 FluentScheduler 包,默认使用最新稳定版

2、以下是 实现功能的代码:

 1 using System;
 2 using System.Windows.Forms;
 3 using FluentScheduler;
 4 
 5 public partial class MainForm : Form
 6 {
 7     public MainForm()
 8     {
 9         InitializeComponent();
10         JobManager.Initialize(new MyRegistry(Query));
11     }
12 
13     public void Query()
14     {
15         // 这里实现Query方法的内容
16     }
17 
18     protected override void OnFormClosing(FormClosingEventArgs e)
19     {
20         // 确保在窗体关闭时停止并清理FluentScheduler的任务
21         JobManager.StopAndBlock(); 
22         base.OnFormClosing(e);
23     }
24 
25     private class MyRegistry : Registry
26     {
27         public MyRegistry(Action queryAction)
28         {
29             // 创建每周一至周五6点5分执行的任务
30             Schedule(() =>
31             {
32                 if (Application.OpenForms.Count > 0)
33                 {
34                     Form mainForm = Application.OpenForms[0]; // 获取主窗体
35                     if (mainForm.InvokeRequired)
36                     {
37                         mainForm.Invoke(queryAction); // 通过委托在UI线程上执行Query()
38                     }
39                     else
40                     {
41                         queryAction(); // 直接执行Query()
42                     }
43                 }
44             }).ToRunEvery(1).Weeks().OnWeekdays().At(6, 5);
45         }
46     }
47 }
48 
49 // 程序入口
50 static class Program
51 {
52     [STAThread]
53     static void Main()
54     {
55         Application.EnableVisualStyles();
56         Application.SetCompatibleTextRenderingDefault(false);
57         Application.Run(new MainForm());
58     }
59 }

 

使用框架的特点:

1、将定时任务的逻辑与UI逻辑分离。不直接从调度器线程更新UI,而是通过更新UI的方法来处理。

2、只在需要时创建新的委托(Action),避免重复创建委托,这在频繁触发的任务中尤其重要。

3、确保应用程序关闭时正确地清理资源。

标签:void,public,Application,WinForms,UI,Query,FluentScheduler,定时
From: https://www.cnblogs.com/yuwentao/p/18074840

相关文章

  • 使用ScottPlot开源库在WinForms中快速实现大型数据集的交互式图表显示
    思维导航前言ScottPlot类库介绍ScottPlot类库支持平台和框架ScottPlot类库源代码新建WinForms项目安装ScottPlot.WinForms包折线图实现柱状图实现饼图实现散点图实现项目演示入口项目源码地址优秀项目和框架精选DotNetGuide技术社区交流群前言在.NET应用开......
  • Spring Schedule定时任务看这一篇就够了
    SpringSchedule 是指Spring框架提供的定时任务调度功能。SpringSchedule允许开发者在应用程序中便捷地创建和管理定时任务,比如按固定频率执行某些操作,或者按照cron表达式设定复杂的调度规则。SpringSchedule功能的依赖直接或间接地包含在 spring-boot-starter 家族中的相......
  • Spring Task 定时任务框架 以及cron表达式
    一:SpringTask介绍SpringTask是spring框架提供的任务调度工具,可以按照约定的时间自动执行某个代码逻辑。定位:定时任务框架作用:定时自动执行某段Java代码应用场景:·信用卡每月还款提醒·银行贷款每月还款提醒·火车票售票系统处理未支付订单·入职纪念日为用户......
  • 定时任务---学习笔记
    定时任务---学习笔记定时任务自动完成操作命令夜里自动备份数据cp/data/backup自动清理磁盘软件:cronie查看软件安装目录rpm-qacronierpm-qlcronie关闭systemctlstopcronie启动systemctlstartcronie用户定时任务配置讲解:/var/spool/cron定时任务保......
  • 多线程(代码案例: 单例模式, 阻塞队列, 生产者消费者模型,定时器)
    设计模式是什么类似于棋谱一样的东西计算机圈子里的大佬为了能让小菜鸡的代码不要写的太差针对一些典型的场景,给出了一些典型的解决方案这样小菜鸡们可以根据这些方案(ACM里面叫板子,象棋五子棋里叫棋谱,咱这里叫设计模式),略加修改,这样代码再差也差不到哪里去......
  • 定时任务技术
    SpringBoot整合Quartz导入pom文件<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-quartz</artifactId></dependency>QuartzConfigpackagecom.pi......
  • 使用ScottPlot库在.NET WinForms中快速实现大型数据集的交互式显示
    前言在.NET应用开发中数据集的交互式显示是一个非常常见的功能,如需要创建折线图、柱状图、饼图、散点图等不同类型的图表将数据呈现出来,帮助人们更好地理解数据、发现规律,并支持决策和沟通。本文我们将一起来学习一下如何使用ScottPlot库在.NETWinForms中快速实现大型数据集的交......
  • 89C52RC定时器(自用复习笔记)
    一、定时器作用(1)用于计时系统,可实现软件计时,或者使用程序每隔一固定时间完成一项操作。(2)替代长时间的Delay,提高CPU的运行效率和处理速度。(3)...操作系统任务切换,多任务执行。二、定时器资源定时器个数:3个(T0、T1、T2),T0,T1与传统51单片机兼容。三、定时器工作原理定时器......
  • 基于单片机的定时温控系统的设计
    摘 要在集成电路技术越来越成熟的情况下单片机的发展也有了翻天覆地的变化。单片机制造初期,需要的成本十分高昂,并且制作工序也是相当的繁杂。但是伴随时间的推移,电子技术经过不断革新,才使今天的单片机性价比变得更高,功能更强。如果这个系统还具有定时功能,它可以解决实际应用......
  • PowerShell 定时备份MySQL数据
    #========================================================#Function:备份MySQL数据库#ReleaseVersion:v0.0.3#ReleaseDate:2020年8月17日#Author:panda666#Website:www.panda666.com#=====================================......