创建windows服务&监控SQL数据运行状态(原)
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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 }
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的文件如:
代码
创建一个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中的
cd C:
后在打
InstallUtil f:w2.exe 这个就安装了服务 卸载服务是 InstallUtil f:w2.exe -u
现在就剩启动服务了,
到windows服务里启动你安装的服务就可以了。
-----------------------------------------------------------------------------
然后本人创建了一个监控SQL数据运行状态的小程序部份代码如下:
每一个小时会去连接数据库一下,看看是不是在运行中呵呵,如果连接不上那就给139发邮件,139邮箱会给手机发短信,这样就可以
做到免费监控SQL数据半给手机发短信....
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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;
}
{
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;
}
-------此处无银三百两------