c#实现定时任务(Timer)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Runtime.InteropServices;
 
namespace AutoCreateTaskApp
{
    class Program
    {
        [DllImport("user32.dll")]
        public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
        public  const int SW_SHOWMINIMIZED = 2;
        public const int SW_HIDE=0;
        static IntPtr winHandle = System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle;    
        static void Main(string[] args)
        {
            //使控制台在后台执行。
            ShowWindow(winHandle, SW_HIDE);
            // Normally, the timer is declared at the class level,
            // so that it stays in scope as long as it is needed.
            // If the timer is declared in a long-running method,  
            // KeepAlive must be used to prevent the JIT compiler 
            // from allowing aggressive garbage collection to occur 
            // before the method ends. You can experiment with this
            // by commenting out the class-level declaration and 
            // uncommenting the declaration below; then uncomment
            // the GC.KeepAlive(aTimer) at the end of the method.
            //timer = new System.Timers.Timer(); 
            System.Timers.Timer timer = new System.Timers.Timer(1000);
            timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);
            //每五分钟执行一次。
            //timer.Interval = 300000;  
            timer.Interval = 2000;
            timer.Enabled = true;
            // If the timer is declared in a long-running method, use
            // KeepAlive to prevent garbage collection from occurring
            // before the method ends.
            GC.KeepAlive(timer);
            //指定无限长等待时间的常数
            Thread.Sleep(System.Threading.Timeout.Infinite);
        }
        static void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            Console.WriteLine(DateTime.Now.ToString());
            Helper.AutoCreateTask();
 
        }   
    }
}

--------------------- 
作者:arvinstudy 
来源:CSDN 
原文:https://blog.csdn.net/ArvinStudy/article/details/7374888 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

上一篇:ASP.NET通过Global.asax和Timer定时器定时运行后台代码


下一篇:Python之路(第三十六篇)并发编程:进程、同步异步、阻塞非阻塞