zoukankan      html  css  js  c++  java
  • 转“使用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);
            }
    Attitude decides everything, detail decides success or failure!
  • 相关阅读:
    skill:极角排序
    skill:树的重心
    [CF1091F](New Year and the Mallard Expedition)
    2018九省联考(SHOI2018)
    陷入僵局?
    2333
    雨后天晴
    听说我首次抢到食堂最早的馄饨
    难题做不动
    成绩出来了?
  • 原文地址:https://www.cnblogs.com/sdx0629/p/1796386.html
Copyright © 2011-2022 走看看