wpf - 如何在 WPF 项目中将 Quartz 配置保存到文件中?
问题描述
我正在构建一个 WPF 应用程序,它允许用户在日历中创建提醒,并且对于每个提醒,用户可以设置名称、注释、日期、警报以及是否/警报应该重复的频率、打盹时间、自动关闭、类型...的提醒。
阅读后似乎最好的主意是使用调度程序,我使用 Quartz.Net (3.0.7)
使用下面的代码,我可以从文件加载作业和触发器,并启动调度程序。但是,以这种方式处理储蓄真的可靠吗?
我读到在 Quartz 中处理“保存”的方式是通过 JobStoe,使用 ADO.NET,但这对我来说实现起来似乎很复杂,我想知道是否有一种更简单的方法来保存我不知道的数据'没看到?
基本上我只想将我所有的提醒保存到一个像 json 文件这样的文件中,这样我就可以获得与关闭之前相同的应用程序状态。
public class QuartzDynamicTest
{
public List<JobsAndTriggers> LstobjJobsAndTriggers { get; set; }
public QuartzDynamicTest()
{
// LstobjJobsAndTriggers would be loaded from a repository:
// Every time a user creates a nex reminder a new JobsAndTriggers is added to the list, and CreateAllJobsAndTriggers would be called
LstobjJobsAndTriggers = new List<JobsAndTriggers>();
LstobjJobsAndTriggers.Add(new JobsAndTriggers { jobIdentityKey = "JOB1", TriggerIdentityKey = "TRIGGER1", jobData_MethodName = "JOB1_METHOD()", ScheduleIntervalInSec = 5 });
LstobjJobsAndTriggers.Add(new JobsAndTriggers { jobIdentityKey = "JOB2", TriggerIdentityKey = "TRIGGER2", jobData_MethodName = "JOB2_METHOD()", ScheduleIntervalInSec = 10 });
CreateAllJobsAndTriggers(LstobjJobsAndTriggers).GetAwaiter().GetResult();
}
public static async Task CreateAllJobsAndTriggers(List<JobsAndTriggers> lstJobsAndTriggers)
{
IScheduler scheduler;
IJobDetail job = null;
ITrigger trigger = null;
var schedulerFactory = new StdSchedulerFactory();
scheduler = schedulerFactory.GetScheduler().Result;
scheduler.Start().Wait();
foreach (var JobandTrigger in lstJobsAndTriggers)
{
JobKey jobKey = JobKey.Create(JobandTrigger.jobIdentityKey);
job = JobBuilder.Create<DemoJob1>().
WithIdentity(jobKey)
.UsingJobData("MethodName", JobandTrigger.jobData_MethodName)
.Build();
trigger = TriggerBuilder.Create()
.WithIdentity(JobandTrigger.TriggerIdentityKey)
.StartNow()
.WithSimpleSchedule(x => x.WithIntervalInSeconds(JobandTrigger.ScheduleIntervalInSec).WithRepeatCount(1)
)
.Build();
await scheduler.ScheduleJob(job, trigger);
}
// Save infos about scheduler...?
}
}
解决方案
推荐阅读
- windows - 如何通过命令行窗口更改 chrome 代理?
- python - 在python中读取指纹输入
- r - 尝试使用 RSelenium 检测和填充表单
- php - phpmyadmin 数据库表未更新
- java - 通过快应用快捷方式打开片段
- xamarin - Xamarin Forms - 在内容视图的视图模型中访问 Prism INavigationService
- assembly - INT 10h, AH=13h 带彩色背景
- javascript - 节点和套接字聊天应用程序 - 仅显示 25 条最近的消息
- ios - 使用 windows 为 IOS 构建 Expo 应用程序
- r - R中的双变量逻辑模型中的错误