创建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;
        }

 

 

 

posted @ 2010-07-15 08:38  咸鱼公子  Views(334)  Comments(0Edit  收藏  举报