当前位置:编程学习 > C#/ASP.NET >>

c#做的window服务如何每天9点定时发邮件??

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {

            //主要是这个地方如何写判断时间的代码???
        }

发邮件的方法已写好SendMail() --------------------编程问答--------------------
        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();
                }
            }
        }
--------------------编程问答-------------------- 取当前电脑时间,等于9点再执行发邮件的方法就好了。如果不重复执行则定义一个全局变量作为当天已经执行了方法的标识。 --------------------编程问答-------------------- 断点没法了 --------------------编程问答--------------------
引用 1 楼 jointan 的回复:
C# code
        private DateTime LastSendTime = DateTime.Today;

        private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            DateTime now = DateTime……


想9点03分发,如何写??
--------------------编程问答-------------------- 想9点03分发,如何写?? --------------------编程问答-------------------- 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}
        } 
--------------------编程问答--------------------
        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();
                }
            }
        }
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,