• 创建windows服务&监控SQL数据运行状态(原)


    代码
     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Diagnostics;
     6 using System.ServiceProcess;
     7 using System.Text;
     8 using System.Threading;
     9 using System.Windows.Forms;
    10 namespace TestService
    11 {
    12     partial class CareEye : ServiceBase
    13     {
    14         private Thread MainThread;
    15         
    16         
    17 
    18         public CareEye()
    19         {
    20             InitializeComponent();
    21             // TODO: 在 InitComponent 调用后添加任何初始化 
    22             MainThread = new Thread(new ThreadStart(ThreadFunc));
    23             MainThread.Priority = ThreadPriority.Lowest;
    24         }
    25 
    26 
    27         protected override void OnStart(string[] args)
    28         {
    29             // TODO: 在此处添加代码以启动服务。
    30             MainThread.Start();
    31         }
    32         protected override void OnStop()
    33         {
    34             // TODO: 在此处添加代码以执行停止服务所需的关闭操作。
    35             MainThread.Abort();
    36         }
    37         public static void ThreadFunc()
    38         {
    39             int LastHour = DateTime.Now.Hour;
    40             while (true)
    41             {
    42                 System.Threading.Thread.Sleep(60000);
    43                 if (DateTime.Now.Hour - 1 == LastHour)
    44                 {
    45                     MessageBox.Show("为了爱护您的眼睛,请您暂时休息5分钟并向远处眺望!""警告", MessageBoxButtons.OK, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
    46                     LastHour = DateTime.Now.Hour;
    47 
    48                 }
    49             }
    50         } 
    51 
    52     }
    53 }
     
     
     添加服务安装程序  
      创建一个Windows服务,仅用InstallUtil程序去安装这个服务是不够的。你必须还要把一个服务安装程序添加到你的Windows服务当中,这样便于InstallUtil或是任何别的安装程序知道应用你服务的是怎样的配置设置。  
       
      1.   将这个服务程序切换到设计视图  
      2.   右击设计视图选择“添加安装程序”  
      3.   切换到刚被添加的ProjectInstaller的设计视图  
      4.   设置serviceInstaller1组件的属性:    
              1)   ServiceName   =   My   Sample   Service  
              2)   StartType   =   Automatic  
      5.   设置serviceProcessInstaller1组件的属性    
              1)   Account   =   LocalSystem  
      6.   生成解决方案  
       
      在完成上面的几个步骤之后,会自动由Visual   Studio产生下面的源代码,它包含于ProjectInstaller.cs这个源文件内。
     安装windows 服务:
        这时就是要把个服务安装一下。进入cmd中的画面,进入Framework2.0的文件如:

      cd C:WINDOWSMicrosoft.NETFrameworkv2.0.50727

      后在打

      InstallUtil f:w2.exe 这个就安装了服务 卸载服务是 InstallUtil f:w2.exe -u

      现在就剩启动服务了,

      到windows服务里启动你安装的服务就可以了。

     -----------------------------------------------------------------------------

    然后本人创建了一个监控SQL数据运行状态的小程序部份代码如下:

    每一个小时会去连接数据库一下,看看是不是在运行中呵呵,如果连接不上那就给139发邮件,139邮箱会给手机发短信,这样就可以

    做到免费监控SQL数据半给手机发短信....

    代码
     private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                SqlConnection conn 
    = new SqlConnection("server=XXX;database=XXX;uid=XXX;pwd=XXX");

                
    if (System.DateTime.Now.Minute == 00)
                {
                    
    try
                    {
                        WriteLog(
    "开始");

                        
    // System.Threading.Thread.Sleep(1000);
                        
    // SendMes("hello bob");

                        conn.Open();
                        WriteLog(
    "连接成功");

                        
    // timer1.Interval = 100000;
                    }
                    
    catch (Exception ex) { SendMail(new MailAddress("bo.zhao@dragoninfo.net.cn"), "13910160214@139.com""bob,the database is disable!"""); WriteLog(ex.ToString()); }
                    
    finally { conn.Close(); }
                }
            }
            
    //记录日志
            private void WriteLog(string msgStrA)
            {
                
    string savePath = @"e:\monitor\";
                
    if (!Directory.Exists(savePath))
                {
                    Directory.CreateDirectory(savePath);
                }
                StreamWriter sw 
    = new StreamWriter(savePath + System.DateTime.Now.ToShortDateString() + ".txt"true);
                sw.WriteLine(DateTime.Now.ToString() 
    + ":" + msgStrA);
                sw.Close();
            }



            
    /// <summary>
            
    /// 
            
    /// </summary>
            
    /// <param name="Messagefrom">bo.zhao@dragoninfo.net.cn</param>
            
    /// <param name="MessageTo">13910160214@139.com</param>
            
    /// <param name="MessageSubject"></param>
            
    /// <param name="MessageBody"></param>
            
    /// <returns></returns>
            public static bool SendMail(MailAddress Messagefrom, string MessageTo, string MessageSubject, string MessageBody)
            {
                MailMessage message 
    = new MailMessage();
                message.From 
    = Messagefrom;
                message.To.Add(MessageTo);              
    //收件人邮箱地址可以是多个以实现群发
                message.Subject = MessageSubject;
                message.Body 
    = MessageBody;
               
    // message.IsBodyHTML = true;              //是否为html格式
                message.Priority = MailPriority.High;  //发送邮件的优先等级
                SmtpClient sc = new SmtpClient();
                sc.Host 
    = "smtp.263xmail.com";              //指定发送邮件的服务器地址或IP
                
    //sc.Port = 587;                          //指定发送邮件端口
             
    //   sc.UseDefaultCredentials = true;
               
    // sc.EnableSsl = true;
                sc.Credentials = new System.Net.NetworkCredential("username""pwd"); //指定登录服务器的用户名和密码
                try
                {
                    sc.Send(message);      
    //发送邮件
                }
                
    catch (Exception e)
                {
                    Console.Write(e.Message);
                    
    return false;
                }
                
    return true;
            }
    -------长沙程序员技术交流QQ群:428755207-------
  • 相关阅读:
    DataSingleton单例
    iOS平台XML解析类库对比和安装说明
    ASIHTTPRequest类库简介和使用说明
    IOS开发之格式化日期时间
    iOS多线程编程之NSThread的使用
    Django的Xadmin后台集成富文本Ueditor
    Django DEBUG=False后静态文件加载失败
    Python多进程
    linux平台虚拟环境依赖安装
    SQLite基础使用
  • 原文地址:https://www.cnblogs.com/qq4004229/p/1777706.html
Copyright © 2020-2023  润新知