c# Windows 服务程序编写与调试

来源:互联网 发布:单片机lcd1602插上重启 编辑:程序博客网 时间:2024/06/06 13:11

Windows服务:Microsoft Windows 服务,使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。

一、新建

新建一个 Windows service 程序



二、属性
VS自动创建了一个 Service1.cs 的文件,点击 F4,查看各个属性的含义:


Autolog 是否自动写入系统的日志文件
CanHandlePowerEvent 服务时候接受电源事件
CanPauseAndContinue 服务是否接受暂停或继续运行的请求
CanShutdown 服务是否在运行它的计算机关闭时收到通知,以便能够调用 OnShutDown 过程
CanStop 服务是否接受停止运行的请求
ServiceName 服务名称

三、功能
点击 F7 查看 Service1.cs 的源代码:默认实现了OnStart和OnStop两个方法。以向一个文本文件中写入数据操作为例:

public partial class Service1 : ServiceBase    {        public Service1()        {            InitializeComponent();        }        /// 服务启动       protected override void OnStart(string[] args)        {            string start = string.Format("{0}-{1}",DateTime.Now.ToString("yyyyMMddHHmmss"),"程序启动了。");            Log(start);    //将字符串 string 写入文件            // 其他功能       }        /// 服务停止        protected override void OnStop()        {            string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "程序停止了。");            Log(start);        }        /// 系统关闭         protected override void OnShutdown()        {            string start = string.Format("{0}-{1}", DateTime.Now.ToString("yyyyMMddHHmmss"), "电脑关闭了。");            Log(start);        }                       /* /// 服务暂停        protected override void OnPause()        {                    }        /// 服务继续        protected override void OnContinue()        {            base.OnContinue();        }             /// 系统电源状态改变        protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)        {            return base.OnPowerEvent(powerStatus);        }        */       void Log(string str)    // 记录服务启动        {            string path = "E://def/6.txt";            using (StreamWriter sw = File.AppendText(path))            {                sw.WriteLine(str);            }        }    }

四、安装程序
切换到 Service1.cs[设计] 界面,右击选择“添加安装程序”


这时项目中就添加了一个新类 ProjectInstaller 和两个安装组件 ServiceProcessInstaller 和 ServiceInstaller。选中“serviceInstaller1” 控件,F4打开属性面板


Description 服务程序的描述信息
DisplayName 服务程序显示的名称
StartType 指定如何启动服务
Manual 服务安装后,必须手动启动
Automatic 每次计算机重新启动时,服务都会自动启动
Disabled 服务无法启动

选中“serviceProcessInstaller1” 控件,F4打开属性面板:


将 serviceProcessInstaller 类的 Account 属性改为 LocalSystem。这样,不论是以哪个用户登录的系统,服务总会启动。

五、生成
右击项目选择生成 ,不能通过F5来直接运行服务项目。

六、安装卸载服务

方法1:
选择 VS组件 “Visual Studio命令提示(2012)” 工具,并以“管理员身份运行"(win7、win8系统下)。注意:这里必须选择“以管理员身份运行”,否则会报错。


需要使用cmd 命令 "cd" 切换目录到 c:\Windows\System32\ 目录下,
安装服务:
installutil.exe E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe
卸载服务:
installutil.exe /u E:\XTestDemo\X_15_WindowsService\bin\Debug\X_15_WindowsService.exe

方法2:

新建两个脚本文件,安装文件 install.bat 内容:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe D:\StudioPro\Database\WindowsService1\WindowsService1\bin\Release\WindowsService1.exe
Net Start Service1
sc config Service1 start= auto

卸载服务文件 uninstall.bat 内容:

%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe /u D:\StudioPro\Database\WindowsService1\WindowsService1\bin\Release\WindowsService1.exe


七:查看服务状态
在“计算机管理”中,服务下可以看到刚刚安装的 Service 服务(cmd命令:services.msc---本地服务设置):


八、Windows 服务调试



在代码中插入断点即可:


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 邮箱里面的文件过期了怎么办 邮箱发的文件过期了怎么办 邮箱发送的文件过期怎么办 小米4s开不开机怎么办 小米平板关机后开不开机怎么办 公司老板跑路了社保怎么办 公司老板跑路社保怎么办 公司被公安局查封社保怎么办 小米四开不了机怎么办 小米的手机后壳裂了怎么办 公司没钱拖欠员工社保怎么办 小米note充不进去电怎么办 公司欠社保没交怎么办 公司不给转社保怎么办 小米note充电特别慢怎么办 小米小米note2充电慢怎么办 小米note充电红灯不闪烁怎么办 小米note充电红灯闪烁怎么办 小米note2突然充电慢怎么办 充电小米note2手机闪烁怎么办 小米6x上网慢怎么办 小米5数据上网慢怎么办 小米5c照相模糊怎么办 小米5充电很慢怎么办 iphone图库照片没了怎么办 我想通过微信号得到手机号怎么办 给充电宝充电慢怎么办 小米5s充不了电怎么办 百度网盘下载速度慢怎么办 负债累累没有钱没有资源怎么办 好福利密码忘了怎么办 手机无法申请百度网盘怎么办 魅族手机运行慢怎么办 阿里小宝卡流量用完了怎么办 阿里宝卡流量用完了怎么办 百度网盘本地空间不足怎么办 百度网盘空间不足怎么办 百度网盘容量不够怎么办 百度网盘内存不够怎么办 百度网盘储存空间不足怎么办 百度网盘手机号注销了怎么办