为什么写这个文章,发现大佬都在研究一些服务啊,架构之类,然后自己把会整的也拿出来整整,也是温故技术吧。
windows服务可以随电脑启动了默默在后台处理一些事情,觉得有些价值!废话不多说!
一步步开始,
1,新建windows server
2,新增server程序,并且添加安装程序
这里要知道的是,windows 是需要引导安装的,同时也是依附环境安装启动的!后面介绍!
3,配置一下基本属性
相信到这里,你已经看出来一个是 服务在任务管理器的配置,以另外一个是在计算机服务中的配置,这里我简单配置一下,服务中的吧,如图显示
这样写的名字也是非常好区分的!
4,接下来我们写点东西来让他跑起来
写的代码如下,就是让他5秒写一条记录
public partial class Service1 : ServiceBase
{
public Service1()
{
InitializeComponent();
System.Timers.Timer timer = new System.Timers.Timer();
timer.Elapsed += new System.Timers.ElapsedEventHandler(TimedEvent);
timer.Interval = 5000;//每5秒执行一次
timer.Enabled = true;
}
//定时执行事件
private void TimedEvent(object sender, System.Timers.ElapsedEventArgs e)
{
//业务逻辑代码
WriteLog("123123123");
}
protected override void OnStart(string[] args)
{
this.WriteLog("客户端数据同步服务:【服务启动】");
}
protected override void OnStop()
{
this.WriteLog("客户端数据同步服务:【服务停止】");
}
protected override void OnShutdown()
{
this.WriteLog("客户端数据同步服务:【计算机关闭】");
}
#region 记录日志
/// <summary>
/// 记录日志
/// </summary>
/// <param name="msg"></param>
private void WriteLog(string msg)
{
//该日志文件会存在windows服务程序目录下
string path = AppDomain.CurrentDomain.BaseDirectory + "\\log.txt";
FileInfo file = new FileInfo(path);
if (!file.Exists)
{
FileStream fs;
fs = File.Create(path);
fs.Close();
}
using (FileStream fs = new FileStream(path, FileMode.Append, FileAccess.Write))
{
using (StreamWriter sw = new StreamWriter(fs))
{
sw.WriteLine(DateTime.Now.ToString() + " " + msg);
}
}
}
#endregion
}
代码比较简单,就不多说咯
5,接下里启动服务,熟悉winform或者控制台的朋友都知道,exe 的程序双击启动就好,我前面说了windowserve是依赖启动的,不相信,我们去bin打开一下 exe会怎么样!
看到没,就是这么尴尬!他说要先启动 InstallUtil.exe,那么这个东东在哪里呢
路径在这里:C:\Windows\Microsoft.NET\Framework\v2.0.50727
当然这里要注意的是你的windows server 项目是什么版本的,如果是4.0的你要找到 4.0 的InstallUtil
地址是:C:\Windows\Microsoft.NET\Framework\v4.0.30319
因为我的framwork 是在c盘是在这个地方的,所以你要自己在framwork 路径中找到,简答来说是你VS安装路径,vs安装肯定是安装了framwork了的!
所以你可以直接复制一个放到你的bin目录下面
6,那么接下来先启动InstallUtil.exe,,然后执行exe 的服务程序,我这里写了要给bat的处理程序比较简单
F:\winfrom服务程序\学习服务程序\windowsServerText\windowsServerText\bin\Debug\InstallUtil.exe
F:\winfrom服务程序\学习服务程序\windowsServerText\windowsServerText\bin\Debug\windowsServerText.exe
Net Start windowsServerText
sc config windowsServerText start= auto
pause
7,开启一下看看情况
可以自己右键启动一下,或者自己写个bat
启动之后,跟据我写的代码是5秒就会在 log.txt 中写段话的,我已经启动,现在去看看
文件生成了也写进去了!
8,至于怎么调试,我们可以附加到任务管理器中的进程中,就可以了!
比较简单,当然现在有开源的Quartz.Net项目,也能够做的定时任务,而且功能十分强大,小菜我也在研究中,欢迎指教!