用.net制作Windows service
1,vs --> new project --> 选择一个Windows Service项目 --> OK,点OK确认后,
2,选择Server1,view design --> 属性 --> server name(这个name是在windows service上显示的名称)
3,选择Server1,view design --> 右键 --> add installer
4,经过第三步后,在项目中会多一个ProjectInstaller.cs --> view desing --> 属性 --> account 把他的值设置为localsystem
5,在onStart 和 onStop中编写代码,编译 生成
6,安装 installutil -i 安装 -u 卸载 (installutil ***.exe -i 或者 -u)
installutil.exe位于C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727文件夹下
7,调试 选择debug --> attach to process --> 选择在上面创建的server name,如果没有server name那么就可以找到响应的.EXE文件,其实这是可以从任务管理器里面看到的进程
8,F5开始即可进行调试
9,定时运行的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.IO;
namespace WindowsService3
{
public partial class Service1 : ServiceBase
{
private System.Timers.Timer timer1 = new System.Timers.Timer();
private int i;
public Service1()
{
InitializeComponent();
this.timer1.Interval = 3000;
this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
}
protected override void OnStart(string[] args)
{
i = 0;
this.timer1.Enabled = true;
}
protected override void OnStop()
{
timer1.Stop();
FileStream fs = new FileStream(@"d:\mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine(" mcWindowsService: Service Stopped " + DateTime.Now.ToString() + "\n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
private void CreateFile(int values)
{
FileStream fs = new FileStream(@"d:\mcWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter m_streamWriter = new StreamWriter(fs);
m_streamWriter.BaseStream.Seek(0, SeekOrigin.End);
m_streamWriter.WriteLine("mcWindowsService: " + values.ToString() + " times \t " + DateTime.Now +" \n");
m_streamWriter.Flush();
m_streamWriter.Close();
fs.Close();
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
i++;
CreateFile(i);
}
}
}