c#

位置:IT落伍者 >> c# >> 浏览文章

用C#做Windows Services


发布日期:2019年08月22日
 
用C#做Windows Services

Windows服务在Visual Studio 以前的版本中叫NT服务在启用了新的名称用Visual C# 创建Windows服务不是一件困难的事本文就将指导你一步一步创建一个Windows服务并使用它这个服务在启动和停止时向一个文本文件中写入一些文字信息

第一步创建服务框架

要创建一个新的 Windows 服务可以从Visual C# 工程中选取 Windows 服务(Windows Service)选项给工程一个新文件名然后点击 确定

你可以看到向导向工程文件中增加Servicecs类

其中各属性的含意是:

ü Autolog 是否自动写入系统的日志文件

ü CanHandlePowerEvent 服务时候接受电源事件

ü CanPauseAndContinue 服务是否接受暂停或继续运行的请求

ü CanShutdown 服务是否在运行它的计算机关闭时收到通知以便能够调用 OnShutDown 过程

ü CanStop 服务是否接受停止运行的请求

ü ServiceName 服务名

第二步向服务中增加功能

cs代码文件中我们可以看到有两个被忽略的函数 OnStart和OnStop

OnStart函数在启动服务时执行OnStop函数在停止服务时执行在这里当启动和停止服务时向一个文本文件中写入一些文字信息代码如下:

protected override void OnStart(string[] args)

{

FileStream fs = new FileStream(@d:\mcWindowsServicetxt FileModeOpenOrCreate FileAccessWrite);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriterBaseStreamSeek( SeekOriginEnd);

m_streamWriterWriteLine(mcWindowsService: Service Started+DateTimeNowToString()+\n);

m_streamWriterFlush();

m_streamWriterClose();

fsClose();

}

protected override void OnStop()

{

FileStream fs = new FileStream(@d:\mcWindowsServicetxt FileModeOpenOrCreate FileAccessWrite);

StreamWriter m_streamWriter = new StreamWriter(fs);

m_streamWriterBaseStreamSeek( SeekOriginEnd);

m_streamWriterWriteLine( mcWindowsService: Service Stopped +DateTimeNowToString()+\n);

m_streamWriterFlush();

m_streamWriterClose();

fsClose();

}

第三步: 将安装程序添加到服务应用程序

Visual StudioNET 随附有安装组件可用来安装与服务应用程序相关联的资源安装组件在正在安装到的系统上注册一项单个的服务并使服务控制管理器知道该服务的存在

要正确安装服务并不需要在安装程序中进行任何特殊编码但是如果需要向安装进程添加特殊功能则可能偶尔需要修改安装程序的内容

将安装程序添加到服务应用程序的步骤是:

在解决方案中访问要向其中添加安装组件的服务的Design视图

在属性窗口中单击添加安装程序链接

这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller并且服务的属性值被复制到组件

若要确定如何启动服务请单击 ServiceInstaller 组件并将 StartType 属性设置为适当的值

ü Manual 服务安装后必须手动启动

ü Automatic 每次计算机重新启动时服务都会自动启动

ü Disabled 服务无法启动

将serviceProcessInstaller类的Account属性改为 LocalSystem

这样不论是以哪个用户登录的系统服务总会启动

第四步生成服务程序

通过从生成菜单中选择生成来生成项目

注意 不要通过按 F 键来运行项目——不能以这种方式运行服务项目

第五步安装服务

访问项目中的已编译可执行文件所在的目录

用项目的输出作为参数从命令行运行 InstallUtilexe在命令行中输入下列代码

installutil yourprojectexe

卸载服务

用项目的输出作为参数从命令行运行 InstallUtilexe

installutil /u yourprojectexe

               

上一篇:C#中IList与List区别

下一篇:C# 启动外部程序的几种方法