文档章节

C#Windows服务程序开发之Windows服务浅析

短短的歼击机
 短短的歼击机
发布于 2012/11/29 11:19
字数 1042
阅读 73
收藏 0

C#Windows服务程序开发之前要明白什么是Windows服务,Windows Service,也称Windows服务,是32位Windows操作系统中一种长期运行的后台程序。它们长期后台运行,没有用户界面,默默无闻,但它们 却是支持Windows正常运行的幕后英雄,却永无出头之日。

Windows服务程序开发为其他系统模块提供了非常重要的服务,而且各个Windows服务分工明确,比如IISAdmin服务提供WEB内容的 发布功能,若IISAdmin服务不启动,则静态HTML页面、ASP、ASP.NET或者WebService等等统统不行;有个名为“Print Spooler”的服务用于提供打印支持,若该服务不启动,则任何软件都不能进行打印,比如Word,记事本或者报表软件等等。

Windows服务程序开发需要明白的事情:Windows启动后在没有用户登录时就会启动Windows服务。Windows NT和Windows2000,以及更新的版本操作系统能运行Windows服务,但Windows98及其前期版本是不能运行服务的。

我们打开Windows资源管理器,在左边的树状列表中选中“桌面-控制面板-管理工具”。

Windows服务之Windows资源管理器 

在右边的列表中打开“服务”项目即可打开Windows服务管理器。

Windows服务之服务 

在这些服务中,有我们最熟悉的IIS Admin和World Wide Web Publishing服务了。我们双击一个服务项目即可打开服务属性对话框。

Windows服务之服务属性 

Windows服务程序开发需要明白的事情:Windows服务有一个服务名称属性,该属性是服务的惟一的不可重复的名称,我们可以在命令行中使用命令“net start 服务名称”来启动服务,使用“net stop 服务名称”来停止服务。

Windows服务程序开发需要明白的事情:Windows服务的启动类型有自动,手动和已禁用。当启动类型为自动时,Windows启动后不等用 户登录就自动启动服务,当启动类型为手动时,需要某个操作员登录后点击这里的“启动”按钮来启动服务,而当启动类型为已禁用时,Windows服务不能启 动。

该页面中的“启动”按钮用于启动尚未启动的Windows服务,运行提供服务的进程;“停止”按钮用于停止已经启动的服务,杀死服务进程;而“暂停”按钮用于通知服务进程暂时停止提供服务,但服务进程依然存在;而“恢复”按钮用于通知处于暂停模式的服务进程重新提供服务。

我们可以查看服务属性对话框的“登录”页面。

Windows服务之登录 

可以指定服务使用本地系统帐户登录,也可另外指定其他的用户,这里有一个允许服务和桌面交互的选项,若选中此选项,则Windows服务可以显示图 形化用户界面,比如显示自己的窗体,显示消息框等等。不过不建议使用该选项,而且Windows服务运行时不要显示图形化用户界面。

我们切换到“依存关系”页面,可以看到本服务和其他服务的依存关系。

Windows服务之依存关系 

各个Windows服务之间可能存在依赖关系,比如IISADMIN服务就依赖另外一个名为RPC的Windows服务,当启动一个Windows 服务时,系统会启动该服务所依赖的其他Windows服务。例如我们设置IISADMIN服务为自动启动,而RPC服务为手动启动,则Windows启动 后会试图自动启动IISADMIN服务,结果会首先启动RPC服务,即使RPC服务不是自动启动。若RPC服务为禁止,无论如何也不能启动,则 IISADMIN服务就无法自动启动了。

C#Windows服务程序开发之Windows服务的基本内容就向你介绍到这里,希望对你了解和学习C#Windows服务程序开发之Windows服务有所帮助。

© 著作权归作者所有

短短的歼击机

短短的歼击机

粉丝 82
博文 268
码字总数 269797
作品 0
武汉
高级程序员
私信 提问
C#Windows服务程序开发实例浅析

C#Windows服务程序开发实例:编写一个C#Windows服务程序,定时从数据库中拿出记录发送邮件。 测试环境:Visual Studio 2005 SP1、Windows Server 2003 SP2 C#Windows服务程序开发实例一、新建...

postdep
2012/11/29
77
0
C#windows服务中的Timer控件的使用

C# windows服务程序中的Timer控件的使用问题是如何解决的呢? 今天和同事一起研究了下C# windows服务程序中的Timer控件的使用的写法. 我们在建立一个C# windows服务程序后,要用到计时器的话一...

postdep
2012/11/29
122
0
浅析Docker容器的应用场景

过去几年开源界以OpenStack为代表的云计算持续火了好久,这两年突然又冒出一个叫Docker的容器技术,其发展之迅猛远超预料。 网上介绍Docker容器的文章已经很多了,用一句话概括:Docker是一种...

有容云
2016/12/14
41
0
surging教学视频资源汇总

surging是什么 surging 是一个分布式微服务框架,提供高性能RPC远程服务调用,采用Zookeeper、Consul作为surging服务的注册中心,集成了哈希,随机,轮询、压力最小优先作为负载均衡的算法,R...

fanly11
2018/04/03
0
0
玩转Windows服务系列——无COM接口Windows服务启动失败原因及解决方案

将VS创建的Windows服务项目编译生成的程序,通过命令行 “服务.exe -Service”注册为Windows服务后,就可以通过服务管理器进行管理了。 问题 通过服务管理器进行启动的时候,发现服务无法启动...

长平狐
2013/12/26
201
0

没有更多内容

加载失败,请刷新页面

加载更多

JS其他类型值转化为Boolean类型规则

本文转载于:专业的前端网站➤JS其他类型值转化为Boolean类型规则 由于最近在笔试的时候,发现好多关于其他类型转化为Boolean类型的题目,因此总结一下! 一、String类型转化为Boolean 1.转化...

前端老手
18分钟前
4
0
EurekaClient自动装配及启动流程解析

在上篇文章中,我们简单介绍了EurekaServer自动装配及启动流程解析,本篇文章则继续研究EurekaClient的相关代码 老规矩,先看spring.factories文件,其中引入了一个配置类EurekaDiscoveryClie...

Java学习录
24分钟前
5
0
析构函数是否必须为虚函数?为何?

在C++中,基类指针可以指向一个派生类的对象。如果基类的析构函数不是虚函数,当需要delete这个指向派生类的基类指针时,就只会调用基类的析构函数,而派生类的析构函数无法被调用。容易造成...

天王盖地虎626
25分钟前
4
0
【TencentOS tiny】深度源码分析(7)——事件

引言 大家在裸机编程中很可能经常用到flag这种变量,用来标志一下某个事件的发生,然后在循环中判断这些标志是否发生,如果是等待多个事件的话,还可能会if((xxx_flag)&&(xxx_flag))这样子做...

杰杰1号
28分钟前
5
0
聊聊nacos client的ServerHttpAgent

序 本文主要研究一下nacos client的ServerHttpAgent HttpAgent nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/http/HttpAgent.java public interface HttpAgent { ......

go4it
34分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部