计划添加书籍的时间c#sql

计划添加书籍的时间c#sql,c#,sql,wpf,C#,Sql,Wpf,我正在开发一个图书馆管理系统,我想添加一个功能,当学生添加一本书时,返回期为7天。我尝试了一些东西,但它不是作为背景运行的。有必要在后台工作吗?我在学生窗口中设置了一个通知系统 我所尝试的: public class SchedulerService { private static SchedulerService _instance; private List<Timer> timers = new List<Timer>();

我正在开发一个图书馆管理系统,我想添加一个功能,当学生添加一本书时,返回期为7天。我尝试了一些东西,但它不是作为背景运行的。有必要在后台工作吗?我在学生窗口中设置了一个通知系统

我所尝试的:

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;
                });
            });
        }