由于公司业务的需要,现在需要做一个windows服务,经过几天的努力,总算弄明白了整个安装过程。先总结如下,供大家参考:
1.打开VS2008,新建-项目-windows服务,默认生成文件包括Program.cs,Service1.cs
2.在Service1.cs添加如下代码: (
注意:制作Windows服务时候的Timer控件并不是在工具箱上直接拖拽过来的Timer,那是System.Windows.Forms命名空间下的组件,而我们这里使用的Timer应该是System.Timers.Timer.
解决方法有:
打开 " 工具箱 "--- 右键 ---" 选择项 "--- 找到 Timer 控件 , 看好了 , 这个 Timer 控件的是 system.Timer 下的 . 可不是 System.Windows.Form. 然后添加 . )
System.Timers.Timer timer1; //计时器
public Service1()
{
InitializeComponent();
}
protected override void OnStart(string[] args) //服务启动执行
{
timer1 = new System.Timers.Timer();
timer1.Interval = 3000; //设置计时器事件间隔执行时间
timer1.Elapsed += new System.Timers.ElapsedEventHandler(timer1_Elapsed);
timer1.Enabled = true;
}
protected override void OnStop() //服务停止执行
{
this.timer1.Enabled = false;
}
private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
//指定间隔时间到了之后要执行的操作,通过双击视图设计器上的timer
}
3.打开Service1.cs【设计】页面,点击右键,选择【添加安装程序】,会出现serviceInstaller1和serviceProcessInstaller1两个组件,将serviceProcessInstaller1的Account属性设为【LocalSystem】, serviceInstaller1的StartType属性设为【Automatic】,ServiceName属性可设置服务名称,此后在【管理工具】--》【服务】中即显示此名称
注意:
当 autoreset 设置为 false 时,Timer只在第一个 Interval 过后引发一次 Elapsed事件。若要保持以 Interval 时间间隔引发 Elapsed事件,请将 AutoReset 设置为 true。
Elapsed事件在threadpool线程上引发。如果Elapsed事件的处理时间比Interval长,在另一个ThreadPool线程上将会再次引发���事件。因此,事件处理程序应当是可重入的。
在一个线程调用stop方法或者将enable属性设置为 false 的同时,可在另一个线程上运行事件处理方法。这可能导致在计时器停止之后引发 Elapsed事件。Stop方法的示例代码演示了一种避免此争用条件的方法。
如果和用户界面元素(如窗体或控件)一起使用Timer,请将包含有Timer的窗体或控件赋值给 synchronizingobject 属性,以便将此事件封送到用户界面线程中。
Timer在运行时是不可见的。
4.生成服务程序
在这里一定要注意net start 是另外一个命令,要分两次执行,所以首先C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil D:\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe执行完毕之后再在cmd中输入net start "My Sample Service"即可。
其中C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\InstallUtil 是我vs2008 InstallUtil .exe所在文件的目录,这个在安装时要视自己的visual studio版本而定。
D:\WindowsService1\WindowsService1\bin\Debug\WindowsService1.exe 是创建的windows服务所在的目录,
执行完之后这个命令 ,再打开cmd窗口中输入net start 服务名,注意 如果服务名之间有空格,一定要在加上双引号。
如何查看刚安装的服务
显示桌面-在桌面上右击“我的电脑”,选择“管理”就可以打计算机管理控制台,选择“服务和应用程序”里面的“服务”,在右侧的服务列表中找到刚注册的ComputerService服务(默认状态为停止),选择该服务右击启动所选择的ComputerService服务就完成了所有的操作,以后每次开机后就自动启动运行该服务.
注意注意:
如果要对windows服务的内容作任何变动,那么必须先卸载windows服务,卸载命令为
卸载windows服务的命令
sc delete “服务名” (如果服务名中间有空格,就需要前后加引号,如果没有服务器名没有空格,就不需要加引号了)
卸载之后再重新安装windows服务。