private DateTime LastSendTime = DateTime.Today;        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            DateTime now = DateTime.Now;
            if (now.Hour == 9)
            {
                TimeSpan span = now - LastSendTime;
                if (span.TotalHours > 1)//防止同一小时内重复发送
                {
                    LastSendTime = now;
                    SendMail();
                }
            }
        }

解决方案 »

  1.   

    System.Timers.Timer t = new System.Timers.Timer(1000);
    t.Elapsed += new System.Timers.ElapsedEventHandler(TimeElapse);
    t.AutoReset = true;
    t.Enabled = true;
    public void TimeElapse(object source, System.Timers.ElapsedEventArgs e) 
            { 
                if(DataTime.Now.hour==9 && DataTime.Now.Minutes==3)或DateTime.Now.ToString("HHmm").Equals("0903")
                 {//sendmail}
            } 
      

  2.   

            private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                DateTime now = DateTime.Now;
                //时间片太小,在系统警张情况下,不保证执行过程中被跳过去,所以分钟用>=3判断
                if (now.Hour == 9 && now.Minute >= 3)
                {
                    TimeSpan span = now - LastSendTime;
                    if (span.TotalHours > 1)//保证在9:03分以后只发送一次
                    {
                        LastSendTime = now;
                        SendMail();
                    }
                }
            }