實用程式系列
這雖然現在有很多排程工具,都相當方便了,但如果有個任務特定時間指定執行某個方法和事件該怎麼做呢?
請參考以下範例
using System;
using System.Timers;
namespace TimerSample
{
    class Program
    {
        static void Main(string[] args)
        {
            Timer timer = new Timer();
            timer.Enabled = true;
            timer.Interval = 1000;  // 執行區隔時間,單位為毫秒; 60000/分鐘
            timer.Start();
            timer.Elapsed += new ElapsedEventHandler(test);
            Console.ReadKey();
        }
        private static void test(object source, ElapsedEventArgs e)
        {
            Console.WriteLine("測試排程事件時間: " + DateTime.Now.ToString());
        }
    }
}

C#中,Timer是一個定時器,它可以按照你所指定的時間執行一個事件。
指定時間區隔是指按照特定時間,如每1分鐘、每10分鐘、每1個小時等執行特定時間;
如果要指定時間的話
 
        class Program
        {
            static void Main(string[] args)
            {
                Timer timer = new Timer();
                timer.Enabled = true;
                timer.Interval = 60000;  //每分鐘
                timer.Start();
                timer.Elapsed += new ElapsedEventHandler(test);
                Console.ReadKey();
            }
            private static void test(object source, ElapsedEventArgs e)
            {
                if (DateTime.Now.Hour == 10 && DateTime.Now.Minute == 30)  //10:30
                    Console.WriteLine("測試排程事件時間: " + DateTime.Now.ToString());
            }
        }
其實會延伸這類的想法是因為筆者以前有寫過股價機器人,用這樣方式來每時間區隔去抓取,YAHOO股價資料去比對資料,如果股價機器人知道便宜價的狀況下,就會通知我該買股票嚕,所以排程的實用性是相當實用的!
補充:那其他語言可不可以,當然可以嚕!
Pythons 
 
import schedule
import time
def job():
    print("I'm working...")
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
while True:
    schedule.run_pending()
    time.sleep(1)
上面的意思就是:
每十分鐘執行一次任務
每隔一小時執行一次任務
每天10:30執行一次任務
每周一執行一次任務
每周三13:15執行一次任務
元哥的筆記