C# Execute function at specific time

后端 未结 6 948
暖寄归人
暖寄归人 2020-12-06 03:06

I made a little Windows Forms program to do some auto backup of some files on my disk. Right now I need to push a button before it is executed, but I want to make the progra

6条回答
  •  伪装坚强ぢ
    2020-12-06 04:02

        //Perhaps the following is a more suitable solution consume the following
    
        public class DailyTrigger
        {  
            readonly TimeSpan triggerHour;
    
            public DailyTrigger(int hour, int minute = 0, int second = 0)
            {
              triggerHour = new TimeSpan(hour, minute, second);
              InitiateAsync();
            }
    
            async void InitiateAsync()
            {
              while (true)
              {
                var triggerTime = DateTime.Today + triggerHour - DateTime.Now;
                if (triggerTime < TimeSpan.Zero)
                  triggerTime = triggerTime.Add(new TimeSpan(24, 0, 0));
                await Task.Delay(triggerTime);
                OnTimeTriggered?.Invoke();
              }
            }
    
            public event Action OnTimeTriggered;
          }
    
    
       // as Follows
    
         var trigger = new DailyTrigger(17); // every day at 5:00pm
    
              trigger.OnTimeTriggered += () =>
              {
                //Do Logic
              };
    

提交回复
热议问题