Friday, 20 December 2019

C# - Run Code Daily at Specified Time



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace AlarmClock
{
    public partial class Form3 : Form
    {
        private List<string> list;

        public Form3()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Console.WriteLine("Thread Stop " + DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss.fff"));
            timer1.Stop();
            for (int i = 0; i < list.Count; i++)
            {               
                var DailyTime = list[i];
                var timeParts = DailyTime.Split(new char[1] { ':' });
                var dateNow = DateTime.Now;
                var date = new DateTime(dateNow.Year, dateNow.Month, dateNow.Day,
                           int.Parse(timeParts[0]), 
                           int.Parse(timeParts[1]), 
                           int.Parse(timeParts[2]));
                TimeSpan ts;
                if (date > dateNow)
                    ts = date - dateNow;
                else
                {
                    date = date.AddDays(1);
                    ts = date - dateNow;
                }              
   
                Console.WriteLine("TS " + ts.ToString() + " " 
                                  + date.ToString("MM-dd-yyyy HH:mm:ss.fff"
                                  + " "+ DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss.fff"));
                // ts-2000 , to make it run 2 second earlier every time
                Task.Delay(ts).ContinueWith((x) => 
                                     SomeMethod(date.ToString("MM-dd-yyyy HH:mm:ss.fff")));
                System.Threading.Thread.Sleep(2000); // or 3000 Waiting for Task Delay to 
                                                     // complete running, because ts normally 
                                                     // just 1 second or in
                                                     // miliseconds
                Console.WriteLine("End " + DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss.fff"
                                  + " " ts.ToString());
            }
            timer1.Start();
            Console.WriteLine("Thread Start "
                                DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss.fff") );
        }

        static void SomeMethod(string date)
        {
            Console.WriteLine("Process " + DateTime.Now.ToString("MM-dd-yyyy HH:mm:ss.fff") +
                              " --- " + date);
        }

        private void Form3_Load(object sender, EventArgs e)
        {
            timer1.Interval = 1000;
            timer1.Enabled = true;
            timer1.Start();

            list = new List<string>();
            list.Add("10:10:00");
            list.Add("10:18:00");
            list.Add("10:26:00");
            list.Add("11:58:45");
        }
    }
}



===================================================================
Output 1

Thread Stop 12-21-2019 11:58:28.406
TS 22:11:31.5934984 12-22-2019 10:10:00.000 12-21-2019 11:58:28.406
End 12-21-2019 11:58:30.418 22:11:31.5934984
TS 22:19:29.5810949 12-22-2019 10:18:00.000 12-21-2019 11:58:30.418
End 12-21-2019 11:58:32.431 22:19:29.5810949
TS 22:27:27.5686914 12-22-2019 10:26:00.000 12-21-2019 11:58:32.431
End 12-21-2019 11:58:34.435 22:27:27.5686914
TS 00:00:10.5648875 12-21-2019 11:58:45.000 12-21-2019 11:58:34.435
End 12-21-2019 11:58:36.447 00:00:10.5648875
Thread Start 12-21-2019 11:58:36.447

Thread Stop 12-21-2019 11:58:37.461
TS 22:11:22.5384821 12-22-2019 10:10:00.000 12-21-2019 11:58:37.461
End 12-21-2019 11:58:39.473 22:11:22.5384821
TS 22:19:20.5260786 12-22-2019 10:18:00.000 12-21-2019 11:58:39.473
End 12-21-2019 11:58:41.486 22:19:20.5260786
TS 22:27:18.5136751 12-22-2019 10:26:00.000 12-21-2019 11:58:41.486
End 12-21-2019 11:58:43.498 22:27:18.5136751
TS 00:00:01.5012715 12-21-2019 11:58:45.000 12-21-2019 11:58:43.498
Process 12-21-2019 11:58:45.011 --- 12-21-2019 11:58:45.000
Process 12-21-2019 11:58:45.011 --- 12-21-2019 11:58:45.000
End (After 2 Second) 12-21-2019 11:58:45.511 00:00:01.5012715
Thread Start 12-21-2019 11:58:45.511

Thread Stop 12-21-2019 11:58:46.525
TS 22:11:13.4748662 12-22-2019 10:10:00.000 12-21-2019 11:58:46.525
End 12-21-2019 11:58:48.537 22:11:13.4748662
TS 22:19:11.4624627 12-22-2019 10:18:00.000 12-21-2019 11:58:48.537
End 12-21-2019 11:58:50.549 22:19:11.4624627
TS 22:27:09.4500592 12-22-2019 10:26:00.000 12-21-2019 11:58:50.549
End 12-21-2019 11:58:52.562 22:27:09.4500592
TS 23:59:52.4376556 12-22-2019 11:58:45.000 12-21-2019 11:58:52.562

Output 2

Thread Start 12-21-2019 19:44:40.025
Thread Stop 12-21-2019 19:44:41.030
TS 00:00:03.9692413 12-21-2019 19:44:45.000 12-21-2019 19:44:41.030
End 12-21-2019 19:44:43.030 00:00:03.9692413
TS 14:33:16.9691269 12-22-2019 10:18:00.000 12-21-2019 19:44:43.030
Process 12-21-2019 19:44:45.010 --- 12-21-2019 19:44:45.000
Process 12-21-2019 19:44:45.012 --- 12-21-2019 19:44:45.000
End 12-21-2019 19:44:45.030 14:33:16.9691269
TS 14:41:14.9690125 12-22-2019 10:26:00.000 12-21-2019 19:44:45.030
End 12-21-2019 19:44:47.031 14:41:14.9690125

======================================================================

Threading Number and Sleeping
Thread Stop 12-21-2019 20:01:14.740 1
TS 00:00:05.2474037 12-21-2019 20:01:20.000 12-21-2019 20:01:14.752 1
End 12-21-2019 20:01:16.753 00:00:05.2474037 1
TS 14:16:43.2462892 12-22-2019 10:18:00.000 12-21-2019 20:01:16.753 1
End 12-21-2019 20:01:18.753 14:16:43.2462892 1
TS 14:24:41.2461748 12-22-2019 10:26:00.000 12-21-2019 20:01:18.753 1
Process 12-21-2019 20:01:20.002 --- 12-21-2019 20:01:20.000 4
End 12-21-2019 20:01:20.753 14:24:41.2461748 1
TS 15:57:24.2460604 12-22-2019 11:58:45.000 12-21-2019 20:01:20.753 1
End 12-21-2019 20:01:22.754 15:57:24.2460604 1
Thread Start 12-21-2019 20:01:22.754 1
Thread Stop 12-21-2019 20:01:23.755 1

Threading Number and No Sleeping
Thread Stop 12-21-2019 20:07:29.000 1
TS 00:00:00.9989979 12-21-2019 20:07:30.000 12-21-2019 20:07:29.001 1
End 12-21-2019 20:07:29.001 00:00:00.9989979 1
TS 14:10:30.9989979 12-22-2019 10:18:00.000 12-21-2019 20:07:29.001 1
End 12-21-2019 20:07:29.001 14:10:30.9989979 1
TS 14:18:30.9989979 12-22-2019 10:26:00.000 12-21-2019 20:07:29.001 1
End 12-21-2019 20:07:29.001 14:18:30.9989979 1
TS 15:51:15.9989979 12-22-2019 11:58:45.000 12-21-2019 20:07:29.001 1
End 12-21-2019 20:07:29.001 15:51:15.9989979 1
Thread Start 12-21-2019 20:07:29.003 1
Process 12-21-2019 20:07:30.009 --- 12-21-2019 20:07:30.000 4
Process 12-21-2019 20:07:30.009 --- 12-21-2019 20:07:30.000 4
Process 12-21-2019 20:07:30.009 --- 12-21-2019 20:07:30.000 4
Process 12-21-2019 20:07:30.009 --- 12-21-2019 20:07:30.000 6
Thread Stop 12-21-2019 20:07:30.014 1
TS 23:59:59.9859400 12-22-2019 20:07:30.000 12-21-2019 20:07:30.014 1
End 12-21-2019 20:07:30.014 23:59:59.9859400 1



Not Override Task Delay
Thread Start 12-21-2019 20:29:06.010 1
Thread Stop 12-21-2019 20:29:07.022 1
TS 00:00:02.9777554 12-21-2019 20:29:10.000 12-21-2019 20:29:07.022 1
End 12-21-2019 20:29:07.022 00:00:02.9777554 1
TS 13:48:52.9777554 12-22-2019 10:18:00.000 12-21-2019 20:29:07.022 1
End 12-21-2019 20:29:07.022 13:48:52.9777554 1
TS 13:56:52.9777554 12-22-2019 10:26:00.000 12-21-2019 20:29:07.022 1
End 12-21-2019 20:29:07.022 13:56:52.9777554 1
TS 15:29:37.9777554 12-22-2019 11:58:45.000 12-21-2019 20:29:07.022 1
End 12-21-2019 20:29:07.022 15:29:37.9777554 1
Thread Start 12-21-2019 20:29:07.023 1
Thread Stop 12-21-2019 20:29:08.036 1
TS 00:00:01.9626973 12-21-2019 20:29:10.000 12-21-2019 20:29:08.037 1
End 12-21-2019 20:29:08.037 00:00:01.9626973 1
TS 13:48:51.9626973 12-22-2019 10:18:00.000 12-21-2019 20:29:08.037 1
End 12-21-2019 20:29:08.037 13:48:51.9626973 1
TS 13:56:51.9626973 12-22-2019 10:26:00.000 12-21-2019 20:29:08.037 1
End 12-21-2019 20:29:08.037 13:56:51.9626973 1
TS 15:29:36.9626973 12-22-2019 11:58:45.000 12-21-2019 20:29:08.037 1
End 12-21-2019 20:29:08.037 15:29:36.9626973 1
Thread Start 12-21-2019 20:29:08.038 1
Thread Stop 12-21-2019 20:29:09.050 1
TS 00:00:00.9486393 12-21-2019 20:29:10.000 12-21-2019 20:29:09.051 1
End 12-21-2019 20:29:09.051 00:00:00.9486393 1
TS 13:48:50.9486393 12-22-2019 10:18:00.000 12-21-2019 20:29:09.051 1
End 12-21-2019 20:29:09.051 13:48:50.9486393 1
TS 13:56:50.9486393 12-22-2019 10:26:00.000 12-21-2019 20:29:09.051 1
End 12-21-2019 20:29:09.051 13:56:50.9486393 1
TS 15:29:35.9486393 12-22-2019 11:58:45.000 12-21-2019 20:29:09.051 1
End 12-21-2019 20:29:09.051 15:29:35.9486393 1
Thread Start 12-21-2019 20:29:09.051 1
Process 12-21-2019 20:29:10.015 --- 12-21-2019 20:29:10.000 5
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 6
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 5
Process 12-21-2019 20:29:10.016 --- 12-21-2019 20:29:10.000 4
Thread Stop 12-21-2019 20:29:10.064 1
TS 23:59:59.9355814 12-22-2019 20:29:10.000 12-21-2019 20:29:10.064 1
End 12-21-2019 20:29:10.064 23:59:59.9355814 1
TS 13:48:49.9355814 12-22-2019 10:18:00.000 12-21-2019 20:29:10.064 1
End 12-21-2019 20:29:10.064 13:48:49.9355814 1
TS 13:56:49.9355814 12-22-2019 10:26:00.000 12-21-2019 20:29:10.064 1
End 12-21-2019 20:29:10.064 13:56:49.9355814 1
TS 15:29:34.9355814 12-22-2019 11:58:45.000 12-21-2019 20:29:10.064 1
End 12-21-2019 20:29:10.064 15:29:34.9355814 1
Thread Start 12-21-2019 20:29:10.065 1


No Thread Stop and No Thread Start
Thread Start 12-21-2019 20:54:27.080 1
Thread Stop 12-21-2019 20:54:28.094 1
TS 00:00:01.9057477 12-21-2019 20:54:30.000 12-21-2019 20:54:28.094 1
End 12-21-2019 20:54:28.094 00:00:01.9057477 1
TS 13:23:31.9057477 12-22-2019 10:18:00.000 12-21-2019 20:54:28.094 1
End 12-21-2019 20:54:28.094 13:23:31.9057477 1
TS 13:31:31.9057477 12-22-2019 10:26:00.000 12-21-2019 20:54:28.094 1
End 12-21-2019 20:54:28.094 13:31:31.9057477 1
TS 15:04:16.9057477 12-22-2019 11:58:45.000 12-21-2019 20:54:28.094 1
End 12-21-2019 20:54:28.094 15:04:16.9057477 1
Thread Start 12-21-2019 20:54:28.094 1
Thread Stop 12-21-2019 20:54:29.108 1
TS 00:00:00.8916897 12-21-2019 20:54:30.000 12-21-2019 20:54:29.108 1
End 12-21-2019 20:54:29.108 00:00:00.8916897 1
TS 13:23:30.8916897 12-22-2019 10:18:00.000 12-21-2019 20:54:29.108 1
End 12-21-2019 20:54:29.108 13:23:30.8916897 1
TS 13:31:30.8916897 12-22-2019 10:26:00.000 12-21-2019 20:54:29.108 1
End 12-21-2019 20:54:29.108 13:31:30.8916897 1
TS 15:04:15.8916897 12-22-2019 11:58:45.000 12-21-2019 20:54:29.108 1
End 12-21-2019 20:54:29.109 15:04:15.8916897 1
Thread Start 12-21-2019 20:54:29.109 1
Process 12-21-2019 20:54:30.014 --- 12-21-2019 20:54:30.000 4
Process 12-21-2019 20:54:30.018 --- 12-21-2019 20:54:30.000 5
Process 12-21-2019 20:54:30.018 --- 12-21-2019 20:54:30.000 5
Process 12-21-2019 20:54:30.018 --- 12-21-2019 20:54:30.000 5
Process 12-21-2019 20:54:30.019 --- 12-21-2019 20:54:30.000 6
Thread Stop 12-21-2019 20:54:30.126 1
TS 23:59:59.8736314 12-22-2019 20:54:30.000 12-21-2019 20:54:30.126 1
End 12-21-2019 20:54:30.126 23:59:59.8736314 1
TS 13:23:29.8736314 12-22-2019 10:18:00.000 12-21-2019 20:54:30.126 1
End 12-21-2019 20:54:30.126 13:23:29.8736314 1
TS 13:31:29.8736314 12-22-2019 10:26:00.000 12-21-2019 20:54:30.126 1
End 12-21-2019 20:54:30.126 13:31:29.8736314 1
TS 15:04:14.8736314 12-22-2019 11:58:45.000 12-21-2019 20:54:30.126 1
End 12-21-2019 20:54:30.126 15:04:14.8736314 1
Thread Start 12-21-2019 20:54:30.128 1
Thread Stop 12-21-2019 20:54:31.136 1
TS 23:59:58.8635737 12-22-2019 20:54:30.000 12-21-2019 20:54:31.136 1
End 12-21-2019 20:54:31.136 23:59:58.8635737 1
TS 13:23:28.8635737 12-22-2019 10:18:00.000 12-21-2019 20:54:31.136 1
End 12-21-2019 20:54:31.136 13:23:28.8635737 1
TS 13:31:28.8635737 12-22-2019 10:26:00.000 12-21-2019 20:54:31.136 1
End 12-21-2019 20:54:31.136 13:31:28.8635737 1
TS 15:04:13.8635737 12-22-2019 11:58:45.000 12-21-2019 20:54:31.136 1
End 12-21-2019 20:54:31.136 15:04:13.8635737 1
Thread Start 12-21-2019 20:54:31.136 1

Thread Stop 12-21-2019 20:54:32.150 1


No comments:

Post a Comment