windows服务安装常见问题及解决办法

由于公司业务的需要,现在需要做一个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服务。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值