以前做的控制台程序或者WIN FORM程序,做完之后都需要自己手工去运行,特别是一些需要放在服务器上的程序,服务器重启后不能自动运行。偶尔发现C# 里面有可以把这些程序做成服务的形式,把这些服务设成自动启动,就能达到重启后程序自已去运行,不用一个个手工启动了。
下面正式开始,这是我跟着MSDN上做的一个例子,做为入门程序。
1、打开VS 2010,新建项目“Windows 服务”,并将项目命名为 MyNewService。单击“确定”。具体如下图:
2、在“解决方案资源管理器”中,右击“Service1.cs”,并选择“视图设计器”。
3、从“工具箱”的“组件”选项卡,将EventLog组件拖到设计器中。
4、在“解决方案资源管理器”中,右击“Service1.cs”,并选择“查看代码”。
5、在 Service1.cs 添加或编辑构造函数以定义一个自定义事件日志。具体如下图:
public Service1()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
}
6、在代码编辑器中,找到创建项目时已自动重写的OnStart方法,然后编写代码来确定当服务开始运行时发生的情况:
protected override void OnStart(string[] args)
{
eventLog1.WriteEntry("In OnStart");
}
7、在代码编辑器中,从“方法名称”下拉列表中选择OnStop方法,该过程在创建项目时已自动重写。编写代码以确定服务停止时发生的情况:
protected override void OnStop()
{
eventLog1.WriteEntry("In onStop.");
}
8、同理,写一个OnContinue()方法,还可以重写OnPause和OnShutdown方法来定义对组件的其他处理
protected override void OnContinue()
{
eventLog1.WriteEntry("In OnContinue.");
}
到现在为止,服务的代码部分全部完成,接下来要做的是为服务创建安装程序
1、在“解决方案资源管理器”中,右击“Service1.cs”,并选择“视图设计器”。
2、视图设计器具有焦点时,右击空白位置然后单击“添加安装程序”。
3、默认情况下,向您的项目添加一个包含两个安装程序的组件类。将该组件命名为ProjectInstaller,它包含的安装程序分别是服务的安装程序(ServiceInstaller1)和服务关联进程的安装程序(ServiceProcessInstaller1)
4、在“ProjectInstaller”的“设计”视图中,单击“ServiceInstaller1”或“serviceInstaller1”。
5、在“属性”窗口中,确保ServiceName属性已设置为 MyNewService,将StartType属性设置为Automatic。
6、在设计器中单击“ServiceProcessInstaller1”(对于 Visual Basic项目)或“serviceProcessInstaller1”(对于 Visual C#项目)。将Account属性设置为LocalSystem。