计划添加书籍的时间c#sql
我正在开发一个图书馆管理系统,我想添加一个功能,当学生添加一本书时,返回期为7天。我尝试了一些东西,但它不是作为背景运行的。有必要在后台工作吗?我在学生窗口中设置了一个通知系统 我所尝试的:计划添加书籍的时间c#sql,c#,sql,wpf,C#,Sql,Wpf,我正在开发一个图书馆管理系统,我想添加一个功能,当学生添加一本书时,返回期为7天。我尝试了一些东西,但它不是作为背景运行的。有必要在后台工作吗?我在学生窗口中设置了一个通知系统 我所尝试的: public class SchedulerService { private static SchedulerService _instance; private List<Timer> timers = new List<Timer>();
public class SchedulerService
{
private static SchedulerService _instance;
private List<Timer> timers = new List<Timer>();
private SchedulerService() { }
public static SchedulerService Instance => _instance ?? (_instance = new SchedulerService());
public void ScheduleTask(int hour, int min, double intervalInHour, Action task)
{
DateTime now = DateTime.Now;
DateTime firstRun = new DateTime(now.Year, now.Month, now.Day, hour, min, 0, 0);
if (now > firstRun)
{
firstRun = firstRun.AddDays(1);
}
TimeSpan timeToGo = firstRun - now;
if (timeToGo <= TimeSpan.Zero)
{
timeToGo = TimeSpan.Zero;
}
var timer = new Timer(x =>
{
task.Invoke();
}, null, timeToGo, TimeSpan.FromHours(intervalInHour));
timers.Add(timer);
}
}
public static class MyScheduler
{
public static void IntervalInSeconds(int hour, int sec, double interval, Action task)
{
interval = interval / 3600;
SchedulerService.Instance.ScheduleTask(hour, sec, interval, task);
}
public static void IntervalInMinutes(int hour, int min, double interval, Action task)
{
interval = interval / 60;
SchedulerService.Instance.ScheduleTask(hour, min, interval, task);
}
public static void IntervalInHours(int hour, int min, double interval, Action task)
{
SchedulerService.Instance.ScheduleTask(hour, min, interval, task);
}
public static void IntervalInDays(int hour, int min, double interval, Action task)
{
interval = interval * 24;
SchedulerService.Instance.ScheduleTask(hour, min, interval, task);
}
}
我真的认为
定时器是一种不好的方法。为什么不把“截止日期”保存到数据库中,在用户登录时查找?
private void Window_Loaded(object sender, RoutedEventArgs e)
{
Timer.MyScheduler.IntervalInDays(12, 00, 7,
() => {
this.Dispatcher.Invoke(() =>
{
NotificatonTxtBox.Text = "You need to return your book" + Environment.NewLine;
});
});
}