文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

.NET怎么使用System.Timers.Timer类实现程序定时执行

2023-07-02 16:55

关注

这篇文章主要讲解了“.NET怎么使用System.Timers.Timer类实现程序定时执行”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“.NET怎么使用System.Timers.Timer类实现程序定时执行”吧!

在C#里关于定时器类有3个:System.Windows.Forms.Timer类、System.Threading.Timer类和System.Timers.Timer类。

System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API  SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环,Console  Application(控制台应用程序)无法使用。

System.Timers.Timer和System.Threading.Timer非常类似,它们是通过.NET Thread Pool实现轻量、精确的计时,对应用程序、消息没有特别的要求。System.Timers.Timer还可以应用于WinForm,完全取代上面的Timer控件。它们的缺点是不支持直接的拖放,需要手工编码。

        public int wrong = 0;        System.Timers.Timer time = new System.Timers.Timer();                private void begin_Click(object sender, EventArgs e)        {            if (action.Text == "启动监测")            {                action.Text = "停止监测";                label2.Text = "已启动";                if (time.Interval.ToString() == "100") // The default value of interval is 100s.                {                    time.Elapsed += new ElapsedEventHandler(TimeEvent);                    time.Interval = 1000;                }                time.Enabled = true;            }            else            {                action.Text = "启动监测";                label2.Text = "已停止";                time.Enabled = false;            }        }        private static void TimeEvent(object source, ElapsedEventArgs e)        {            int tsec = e.SignalTime.Second;            int isec = 10;            if (tsec == isec) //it will be activated at 10s of every minutes.            {                if (!Check("http://www.test.com"))                {                    string smtp_server="192.168.8.1";                    int port = 25;                    string mail_from = "test_from@163.com";                    string sender="test";                    string mail_to = "test_to@163.com";                    string receiver="adminer";                    string subject = "The site is run out exception on " + DateTime.Now.ToString("yyyyMMddhhmmss");                    string body = "The site can not open on " + DateTime.Now.ToString() + ",please check it !";                    try                    {                        SendEmail(smtp_server, port, mail_from, sender, mail_to, receiver, subject, body);                    }                    catch(Exception ex)                    {                        MessageBox.Show(ex.Message);                    }                }            }        }        private static bool Check(string urlStr)        {            HttpWebRequest myWebRequest = null;            try            {                myWebRequest = (HttpWebRequest)WebRequest.Create(urlStr);                HttpWebResponse res = (HttpWebResponse)myWebRequest.GetResponse();                if (res.StatusCode == HttpStatusCode.OK)                {                    res.Close();                    return true;                }                else                {                    res.Close();                    return false;                }            }            catch (Exception)            {                return false;            }        }        public static void SendEmail(string smtp_server, int port, string mail_from, string sender, string mail_to, string receiver, string subject, string body)        {            MailAddress from = new MailAddress(mail_from, sender);            MailAddress to = new MailAddress(mail_to, receiver);            MailMessage message = new MailMessage(from, to);            message.BodyEncoding = Encoding.UTF8;            message.IsBodyHtml = true;            message.Subject = subject;            message.Body = body;            SmtpClient client = new SmtpClient(smtp_server, port);            //SmtpClient client = new SmtpClient(smtp_server);            // Add credentials if the SMTP server requires them.             client.Credentials = CredentialCache.DefaultNetworkCredentials;            client.Send(message);        }

感谢各位的阅读,以上就是“.NET怎么使用System.Timers.Timer类实现程序定时执行”的内容了,经过本文的学习后,相信大家对.NET怎么使用System.Timers.Timer类实现程序定时执行这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯