C#写Windows Service(windows服务程序)
背景:
要学习使用一个新东西,我们必须知道他是个什么东西。对于我们此次研究的windows服务来说,他又是个什么东西,其实也没有什么高深的了。windows service概述:
一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序。Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过点击一下就直接可以运行,它有它特殊的启动方式。这些启动方式包括了自动启动和手动启动两种方式。
对于自动启动的Windows服务程序,它们在Windows启动或是重启之后用户登录之前就开始执行了。只要你将相应的Windows服务程序注册到服务控制管理器(Service ControlManager)中,并将其启动类别设为自动启动就行了。而对于手动启动的Windows服务程序,你可以通过命令行工具的NET START 命令来启动它,或是通过控制面板中管理工具下的服务一项来启动相应的Windows服务程序。更或者,你自己写一个winform的窗体来控制服务的启动,那个的方式就多种多样了。
类似,一个Windows服务程序也不能像一般的应用程序那样被终止。因为Windows服务程序一般是没有用户界面的,所以你也要通过命令行工具来停止它,或是在系统关闭时使得Windows服务程序自动停止。因为Windows服务程序没有用户界面,所以基于用户界面的API函数对其是没有多大的意义。为了能使一个Windows服务程序能够正常并有效的在系统环境下工作,程序员必须实现一系列的方法来完成其服务功能。
有的时候使用服务来管理或者自动化的做一些工作对我们的帮助可谓是巨大的,因为电脑比人脑更加准时,负责!(仅仅是个人意见,如有不同,勿扔砖头)
那下面就说一下如何用C#来写一个windows service程序:
1、创建windows service项目:
效果:
接下来,我们就在里面写自己要运行的代码程序就好了,多会应用进程或线程:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.ServiceProcess; using System.Text; using System.Threading.Tasks; using System.IO; using System.Threading;namespace TestService1 {public partial class Service1 : ServiceBase{System.Timers.Timer timer1;//计时器public Service1(){InitializeComponent();}//启动服务时执行protected override void OnStart(string[] args){timer1 = new System.Timers.Timer();timer1.Interval = 60000;//执行时间间隔60stimer1.Elapsed += new System.Timers.ElapsedEventHandler(TestWrite);timer1.Enabled = true;}//具体执行的方法程序private void TestWrite(object sender, System.Timers.ElapsedEventArgs e){while (true){string FileName = "test";string FILE_NAME = FileName + ".txt";//每天按照日期建立一个不同的文件名StreamWriter sr;if (File.Exists(FILE_NAME)) //如果文件存在,则创建File.AppendText对象{sr = File.AppendText(FILE_NAME);}else //如果文件不存在,则创建File.CreateText对象{sr = File.CreateText(FILE_NAME);}string content = "这只是个测试" + System.DateTime.Now.ToString();sr.WriteLine(content);//将传入的字符串加上时间写入文本文件一行sr.Close();}}//停止服务时执行protected override void OnStop(){this.timer1.Enabled=false;}} }
写完之后,进行项目生成。
4、设置属性:
将不带Process的服务名称改为自己需要的,并把启动模式设置为AUTOMATIC(自动)
把带Process的属性account改为LocalSystem
5、重新生成项目,进行项目安装,流程见上篇博客
如图,启动服务。
6、运行效果:
总结:
这只是一个简单的使用服务来向txt文档写内容的小例子,可是如果我们要定时向一个文档里面去写日志或者数据映射,这会不会帮我们很大的忙呢,前提是,自己电脑的内存要够大,CPU也要支持,要不然,服务开得多了,会造成宕机的哦!加油,继续研究
C#写Windows Service(windows服务程序)相关推荐
- python 编程服务_Python编写Windows Service服务程序
如果你想用Python开发Windows程序,并让其开机启动等,就必须写成windows的服务程序Windows Service,用Python来做这个事情必须要借助第三方模块pywin32,自己去下 ...
- Windows Service服务程序的原理及实现(0)服务主函数 控制处理函数
摘要: 何为服务?Windows 会话中可长时间运行的可执行应用程序.这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面.这种服务非常适合在服务器上使用,或任何时候,为了不影 ...
- 学写Windows Service
记得很早之前,一个同事要写一个定时任务,先要在一条新闻在到达设定期限时 由程序自动删除 可以一直没有思路 问我 我也没有好的办法 后来,我在前段时间找到一个 方法:http://www.cnblogs ...
- python实现windows Service服务程序
python实现windows Service服务程序 win32serviceutil.ServiceFramework是封装得很好的Windows服务框架,本文通过继承它来实现. 通过SvcDoR ...
- C# 编写Windows Service(windows服务程序)
Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.Windows服务程序虽然是可执行的,但是它不像一般的可执行文件通过双击就 ...
- 用 VC++ 2008 编写 Windows Service(系统服务)
用 VC++ 2008 编写 Windows Service(系统服务) 2008-03-30 08:08 现在许多 Windows Service 应用都可以用 c# 很好的完成,不过毕竟是托管代码 ...
- Visual Studio.net 2010 Windows Service 开发,安装与调试
本示例完成一个每隔一分钟向C:\log.txt文件写入一条记录为例,讲述一个Windows Service 程序的开发,安装与调试 原程序,加文档示例下载 /Files/zycblog/Sou ...
- C# Windows Service与Timer(计时器)
这两天被.NET的Timer搞得有相当晕!看来不能太相信Bill.Gates! 事情是这样的: 写了一个定时发短信的Windows服务,发布在服务器上后,发现短信没有发 ...
- 用VS(c#)创建、调试windows service以及部署卸载
同事问到windows service的东东,现在整理一下,用c#如何创建一个windows service,以及如何调试.部署.卸载. 一.创建windows service 1. 打开VS2008 ...
最新文章
- 【直播】李祖贤:集成学习答疑直播之五 -- 常用集成思路
- JavaScript导出Excel通用代码。
- python编译原理_编译原理实战课 带你吃透编译技术核心概念与算法
- SAP HANA CLOUD和aws一个实际项目中的性能比较
- ListView隐藏右侧滚动条,listview去掉分割线,自定义分割线,ListView添加HeaderView和FooterView
- vue-flowy前端流程图绘制工具
- 妈妈别哭,我去了天堂[组图]【值得你去看,值得你去深思】
- codeforces 664B B. Rebus(乱搞题)
- Java学习:多线程
- 2021-3测试通过:eclipse安装svn插件
- 科技文献检索(六)——检索语言
- python语言是胶水语言吗_为什么只有python是胶水语言?
- 像素px与厘米怎么换算
- Linux指令部分(一)
- android 计算屏幕尺寸来区分phone和pad
- Life feelings--13--青春不毕业,那些心里念念叨叨难以忘怀的记忆
- 网站漏洞整改报告公司之攻防方案
- android studio 使用夜神模拟器
- 最简单的MySQL安装教程(数据库免安装版,免安装版,亲测好用) mysql-5.7.33-winx64.zip
- HTTP协议中 POST和GET的区别
热门文章
- #yyds干货盘点# Kubernetes 怎样控制业务的资源水位?(16)
- 文件夹无法访问如何解决?
- news_flash新闻快讯项目 Chapter 1
- F - LIS on Tree【二分OR权值线段树】
- mediaplayer参数设置说明
- 扬帆开局|香港电讯与国家(深圳·前海)新型互联网交换中心合作项目正式启动
- 服务器磁盘格式化显示灰色的,磁盘管理里的格式化选项是灰色的怎么处理?
- 阿里云课堂:云安全的架构设计与实践之旅
- 2021-09-10 简单的音乐节奏游戏实现
- Linux-虚拟机ping不通主机