大西瓜3721 通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
本文实例为大家分享了C#添加Windows服务的具体方法,供大家参考,具体内容如下
源码下载地址:http://xiazai.weikejianghu.com/201701/yuanma/Windowsservice1(weikejianghu.com).rar
步骤一、创建服务项目。

步骤二、添加安装程序。

步骤三、服务属性设置 【serviceInstaller1】。

4.1 添加定时任务
public partial class SapSyn : ServiceBase
{
System.Timers.Timer timer1; //计时器
System.Timers.Timer timer2; //计时器
System.Timers.Timer timer3; //计时器
System.Timers.Timer timer4; //计时器
public SapSyn()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
timer1 = new System.Timers.Timer();
timer1.Interval = 8000; //设置计时器事件间隔执行时间
timer1.Elapsed += new System.Timers.ElapsedEventHandler(TMStart1_Elapsed);
timer1.Enabled = true;
timer2 = new System.Timers.Timer();
timer2.Interval = 8000; //设置计时器事件间隔执行时间
timer2.Elapsed += new System.Timers.ElapsedEventHandler(TMStart2_Elapsed);
timer2.Enabled = true;
timer3 = new System.Timers.Timer();
timer3.Interval = 8000; //设置计时器事件间隔执行时间
timer3.Elapsed += new System.Timers.ElapsedEventHandler(TMStart3_Elapsed);
timer3.Enabled = true;
timer4 = new System.Timers.Timer();
timer4.Interval = 8000; //设置计时器事件间隔执行时间
timer4.Elapsed += new System.Timers.ElapsedEventHandler(TMStart4_Elapsed);
timer4.Enabled = true;
}
protected override void OnStop() //服务停止执行
{
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Stop.");
}
this.timer1.Enabled = false;
this.timer2.Enabled = false;
this.timer3.Enabled = false;
this.timer4.Enabled = false;
}
protected override void OnPause()
{
//服务暂停执行代码
base.OnPause();
}
protected override void OnContinue()
{
//服务恢复执行代码
base.OnContinue();
}
protected override void OnShutdown()
{
//系统即将关闭执行代码
base.OnShutdown();
}
private void TMStart1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//执行SQL语句或其他操作
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\" + 1 + "log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Start.");
}
}
private void TMStart2_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//执行SQL语句或其他操作
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\" + 2 + "log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Start.");
}
}
private void TMStart3_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//执行SQL语句或其他操作
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\" + 3 + "log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Start.");
}
}
private void TMStart4_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//执行SQL语句或其他操作
using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\" + 4 + "log.txt", true))
{
sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "Start.");
}
}
}
</div>
4.2 设置服务启动方式为自动启动
[RunInstaller(true)]
public partial class ProjectInstaller : System.Configuration.Install.Installer
{
public ProjectInstaller()
{
InitializeComponent();
this.Committed += new InstallEventHandler(ProjectInstaller_Committed);
}
private void ProjectInstaller_Committed(object sender, InstallEventArgs e)
{
//参数为服务的名字
System.ServiceProcess.ServiceController controller = new System.ServiceProcess.ServiceController("ServiceSapSyn");
controller.Start();
}
private void serviceInstaller1_AfterInstall(object sender, InstallEventArgs e)
{
}
}
</div>
步骤五、脚本配置。
安装服务脚本
卸载服务脚本

5.1 停止或启动服务的代码
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string thispath = Application.StartupPath;
public string Propath = "";
private void Form1_Load(object sender, EventArgs e)
{
this.Text = "启动服务";
}
/// <summary>
/// 启动服务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor;
string StarPath = @"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe " + Propath;
FileStream fs = new FileStream(thispath + "\\Install.bat", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
try
{
sw.WriteLine(StarPath);
sw.WriteLine("Net Start ServiceTest");
sw.WriteLine("sc config ServiceTest start= auto");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
sw.Close();
fs.Close();
}
System.Diagnostics.Process.Start(thispath + "\\Install.bat");
this.Text = "启动服务:你选择的服务已经启动。";
Cursor = Cursors.Default;
}
/// <summary>
/// 停止服务
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button2_Click(object sender, EventArgs e)
{
Cursor = Cursors.WaitCursor;
string StarPath = @"%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u " + Propath;
FileStream fs = new FileStream(thispath + "\\Uninstall.bat", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
try
{
sw.WriteLine(StarPath);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
finally
{
sw.Close();
fs.Close();
}
System.Diagnostics.Process.Start(thispath + "\\Uninstall.bat");
this.Text = "启动服务:你选择的服务已经卸载。";
Cursor = Cursors.Default;
}
private void button3_Click(object sender, EventArgs e)
{
///选择文件框 对象
OpenFileDialog ofd = new OpenFileDialog();
//打开时指定默认路径
ofd.InitialDirec

