win7下用c#开发windows服务

1、首选我们需要打开VS2008,然后点击文件--》新建--》项目,选择Visual C#--》windows--》windows服务。如下图所示:

2、然后修改Service1.cs类。

我们需要重写OnStart和OnStop方法。代码如下所示:

[csharp] view plaincopy

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Diagnostics;
  6. using System.ServiceProcess;
  7. using System.IO;
  8. using System.Text;
  9. using System.Timers;
  10. using System.Threading;
  11. //=================================================================================
  12. //
  13. //        Copyright (C) 2011, 飞龙在天
  14. //        All rights reserved
  15. //
  16. //        FileName: Class1
  17. //        Created by draonpeng2008 at 11-08-02 10:40:57
  18. //        Email: [email protected]
  19. //        http://blog.csdn.net/dragonpeng2008
  20. //
  21. //==================================================================================
  22. namespace WindowsServiceTest
  23. {
  24. public partial class Service1 : ServiceBase
  25. {
  26. public Service1()
  27. {
  28. InitializeComponent();
  29. }
  30. protected override void OnStart(string[] args)
  31. {
  32. EventLog.WriteEntry("我的服务启动--飞龙在天");//在系统事件查看器里的应用程序事件里来源的描述
  33. writestr("服务启动");//自定义文本日志
  34. System.Timers.Timer t = new System.Timers.Timer();//定时器
  35. t.Interval = 1000;//设置定时器时间间隔为1000毫秒
  36. t.Elapsed += new System.Timers.ElapsedEventHandler(ChkSrv);//到达时间的时候执行事件(每隔一秒)
  37. t.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
  38. t.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
  39. }
  40. protected override void OnStop()
  41. {
  42. writestr("服务停止");
  43. EventLog.WriteEntry("我的服务停止");
  44. }
  45. /// <summary>
  46. /// 定时执行程序代码
  47. /// </summary>
  48. /// <param name="source"></param>
  49. /// <param name="e"></param>
  50. public void ChkSrv(object source, System.Timers.ElapsedEventArgs e)
  51. {
  52. int intSecond = e.SignalTime.Second;
  53. try
  54. {
  55. //这里执行你的东西
  56. writestr("服务运行中:"+intSecond);
  57. Thread.Sleep(10000);
  58. }
  59. catch (Exception err)
  60. {
  61. writestr(err.Message);
  62. }
  63. }
  64. /// <summary>
  65. /// 将信息输出到文本文件
  66. /// </summary>
  67. /// <param name="readme"></param>
  68. public void writestr(string readme)
  69. {
  70. StreamWriter dout = new StreamWriter(@"D:\" + "WindowsServiceTestLog.txt", true);
  71. dout.Write("\r\n事件:" + readme + "\r\n操作时间:" + System.DateTime.Now.ToString("yyy-MM-dd HH:mm:ss"));
  72. dout.Close();
  73. }
  74. }
  75. }

3、在Service1.cs的设计视图上右键“添加安装程序”。系统会自动生成“ProjectInstaller.cs”文件,在该文件的设计视图界面会有两个控件,一个是serviceProcessInstaller1,一个是serviceInstaller1。

如下图:

4、在ProjectInstaller.cs设计界面中,我们设置serviceProcessInstaller1和serviceInstaller1的属性。

serviceInstaller1属性中设置:

Description(系统服务的描述)

DisplayName (系统服务中显示的名称)

ServiceName(系统事件查看器里的应用程序事件中来源名称)

StartType(启动服务的方式,分为手动、自动和禁用)

serviceProcessInstaller1属性设置:

Account 下拉设置成 LocalSystem

5、注意:我们无法在VS2008中调试该工程,会弹出错误信息,如下图:

6、我们需要用InstallUtil.exe进行服务的安装,该文件可以在

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\

文件夹下找到。

7、我们将InstallUtil.exe复制到源程序的Debug文件夹下,然后我们以管理员身份运行VS2008命令提示。

注意:这里必须以管理员的身份运行,否则在安装服务时会出现以下错误:

在“安装”阶段发生异常。

System.Security.SecurityException: 未找到源,但未能搜索某些或全部事件日志。不可访问的日志: Security。

8、然后我们执行CMD命令,定位到源程序的Debug文件夹下,因为我的Debug文件夹在E盘,所以使用的dos命令如下:

[sql] view plaincopy

  1. E:
  2. cd E:\Projects\WindowsServiceTest\WindowsServiceTest\bin\Debug
  3. InstallUtil WindowsServiceTest.exe

执行结果如下图所示:

9、然后我们在控制面板--》管理工具--》服务中会看到多了一个MyService的服务。我们可以看到服务名称为:ServiceTest,服务描述为:我的测试服务。

10、我们启动服务,然后打开D盘根目录,会看到多了一个名为:WindowsServiceTestLog.txt的文本文件。

打开该文本文件,会看到我们新建的服务每秒往该文本文件中写入了一行文本。

11、最后我们就可以卸载该服务了,我们在命令行中输入:

[sql] view plaincopy

  1. InstallUtil -u WindowsServiceTest.exe

可以看到执行结果如下:

我们再到服务中查看,就会发现“MyService”已经被卸载掉了。

win7下用c#开发windows服务

时间: 2024-10-09 18:35:06

win7下用c#开发windows服务的相关文章

C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件

使用VS2012开发Windows服务,需要使用Log4net日志组件记录业务情况,但是始终生成不了日志文件. 1 /// <summary> 2 /// 入口方法 3 /// </summary> 4 /// <param name="args">参数</param> 5 public static void Main(string[] args) 6 { 7 // 加载Log4net模块 8 LogHelper.SetConfig(&

.net开发windows服务小结 (转发)

.net开发windows服务小结 今天学习了在.net下创建一个windows服务,总结一下学习心得. 开发环境:visual studio 2012 一.编写程序 (1)创建一个空解决方法 (2)添加一个控制台应用程序项目 (3)添加一个Windows服务,如下所示: (4)右键 查看代码 看到如下代码: public WindowsService() { InitializeComponent(); } protected override void OnStart(string[] ar

win7下的erlang开发环境搭建

Erlang是一种并发编程语言(面向并发编程),它可以和分布式.多核/多处理器编程结合的天衣无缝. Erlang主要用来编写分布式的应用程序.下面看看Erlang开发环境的搭建. 1. http://www.erlang.org/download.html下载64位安装文件2. 把安装文件目录配置在环境变量中环境变量配完后,检测是否安装成功 (1)打开命令行输入erl (2)打开开始->所有程序->Erlang OTP ->erlang可以直接打开  如果出现以下界面表示安装成功 win

vs2015开发Windows服务

工作已经很久,时隔这么长时间写这篇文章是给自己以后做参考.也不至于以后长时间不写Windows服务而忘记整个开发过程.windows服务开发,基础的就不说了,直接上过程. 1.新建windows服务项目,我这里选择的是Framework4.0,没有选择高版本是为了防止在服务在一些低版本系统上无法正常运行. 2.添加Windows服务的安装程序. 在默认Service1设计器界面空白处点击右键->添加安装程序,系统会自动新建一个带有默认配置的安装程序类,如下图: 新建完安装程序后,需要给默认的se

.net开发windows服务小结

今天学习了在.net下创建一个windows服务,总结一下学习心得. 开发环境:visual studio 2012 一.编写程序 (1)创建一个空解决方法 (2)添加一个控制台应用程序项目 (3)添加一个Windows服务,如下所示: (4)右键 查看代码 看到如下代码: public WindowsService() { InitializeComponent(); } protected override void OnStart(string[] args) { } protected

C#开发Windows服务

Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序. 服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面. 服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用. 还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务 一.创建服务 1.VS新建一个Windows服务项目,命名MyWindowsService

使用Topshelf 开发windows服务

在业务系统中,我们为了调度一些自动执行的任务或从队列中消费一些消息,所以基本上都会涉及到后台服务的开发.如果用windows service开发,非常不爽的一件事就是:调试相对麻烦,而且你还需要了解 windows service 相关的一些开发和安装部署,所以,windows service非常的不方便.Topshelf框架,能够让你将 console application 直接封装为 windows service,这样你在开发的时候,就可以直接在console 程序上开发,然后构成win

C# 开发windows服务的一些心得

最近在做一个windows服务的项目,发现并解决了一些问题,拿出来和大家分享一下,以下windows服务简称“服务” 1.服务如何在某种情况下弹出一个窗体? 第一种解决办法,用安装程序的代码修改注册表来完成: 1.右击服务的视图设计界面的空白处,添加安装程序 2.右击默认的serviceProcessInstaller1-->属性-->Account属性设置为LocalSystem 3.右击安装程序空白处-->查看代码,添加以下代码 public override void Instal

Win7下 OpenCV+Qt开发环境搭建

1.所需软件工具: (1)OpenCV开发库,2.4.9版:包括源文件(source文件夹)和编译后的文件(build文件夹),但最好自己使用CMake又一次编译.否则easy出错. (2)Qt Creator,在官网下载最新版的,选择MinGW版本号. (3)CMake,官网下载最新版. 2.安装OpenCV.即将源文件和编译后文件,解压到文件夹: F:\ProgramFiles\programme\openCV\openCV249 当中包括两个文件夹:build(编译后文件)和sources