.net开发windows服务小结





public WindowsService()
{
InitializeComponent();
} protected override void OnStart(string[] args)
{ } protected override void OnStop()
{ }
其中,OnStart方法在 启动服务时执行;OnStop方法在 停止服务时执行;还有两个重载方法:OnPause、OnContinue,分别在 暂停服务时执行、恢复服务时执行;它们对应于下图所示的操作:

(5)添加代码:
private Thread timerThread;
/// <summary>
/// 启动服务时执行
/// </summary>
/// <param name="args"></param>
protected override void OnStart(string[] args)
{
File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服务开始工作!\r\n", Encoding.Default);
timerThread = new Thread(new ThreadStart(Start));
timerThread.Start();
} /// <summary>
/// 停止服务时执行
/// </summary>
protected override void OnStop()
{
timerThread.Abort();
File.AppendAllText("D:\\1.txt", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":windows服务结束工作!", Encoding.Default);
} private void Start()
{
while (true)
{
using (StreamWriter writer = new StreamWriter("D:\\1.txt",true,Encoding.Default))
{
writer.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + ":每十秒钟输出一次!");
}
Thread.Sleep( * );
}
}
(6)安装程序,设置属性
在设计器中添加安装程序

会生成一个ProjectInstaller.cs文件,如下图所示:

然后需要做两件事情:
①设置serviceProcessInstaller1控件的Account属性为“LocalSystem”
②设置serviceInstaller1组件的StartType属性为Automatic,把服务设置为自动启动
(7)启动服务
打开vs的开发人员命令提示 工具 以管理员身份运行

执行如下所示命令:

①进入到项目所在文件夹,并进入\bin\Debug\路径下
②安装服务命令:installutil ConsoleApplication.exe,然后就可以在服务列表中看到我们启动的服务:

卸载服务的命令是:installutil /u ConsoleApplication.exe
当我们修改代码后,需要把服务先卸载,才能重新生成成功
③启动服务
启动服务后,等一会儿再停止服务,然后我们打开D盘下的1.txt文档,可以看到下图所示的结果:

二、调试
在服务运行的状态下,我们找到菜单栏,调试——>附加到进程

注意勾选“显示所有用户的进程”,选项,找到我们的进程,点击附加,然后在程序中添加断点,就可以调试程序了!

另:昨天又尝试把windows服务部署在另外一台没有安装virtual studio的机器上,没有了 vs的开发人员命令提示,又查阅了半天资料,才找到解决办法,再次贴出来供以后查阅:
主要是使用sc命令,sc是用于与服务控制管理器和服务进行通信的命令行程序。
关于sc命令的详细说明,我还没有详细了解,目前只会使用创建、删除命令;SC命令的更多用法请在cmd命令提示符中执行help sc 查看
创建服务<将其添加到注册表>,示例:sc create MsgService binpath= "F:\Message Service\Service.exe" displayname= "短信服务" start= auto
其含义表示创建一个名为MsgService的服务;地址为F:\Message Service\Service.exe,这个地址指向可执行程序;显示的名字为“短信服务”;自动启动
<从注册表>删除服务,示例:sc delete MsgService
知道使用什么命令了,但是都需要把什么文件部署到另外一个计算机呢?
不需要右键发布项目,只需要把工程目录bin\Debug\下的所有文件拷贝到服务器上即可,如下图所示:

然后进入服务列表,启动服务即可
.net开发windows服务小结的更多相关文章
- 使用Visual Studio 2015 Community 开发windows服务
昨天研究在.NET下开发Windows服务程序,期间遇到一些小问题,这里仅将自己的开发过程和需要注意的地方写下和广大网友分享…… 1.基础 Windows服务是指系统启动时能够自己运行的程序.W ...
- C#开发Windows服务 附简单实例实现禁止QQ运行
本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...
- VS2013开发Windows服务项目
这篇随笔里,我将介绍如何用VS2013开发Windows服务项目,实现的功能是定时发送电子邮件. 开发环境:VS2013,SQL Server2008,采用C#语言开发 步骤一:创建Windows服务 ...
- C#开发Windows服务详细流程
1.Windows服务简单介绍 Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序,主要用于长时间运行的功能或者执行定时任务.一般情况下,用户不能通过用户界面来安装和启 ...
- 使用Topshelf开发Windows服务、log4net记录日志
开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...
- 开发Windows服务
在开发Windows服务时需要注意一点,如果在开发完成后,需要通过命令来进行安装的,那么在开发的时候,需要在服务类上面添加一个安装文件.如下图: 添加完成后,就 ...
- c#金额转换成中文大写金额 .Net开发Windows服务
c#金额转换成中文大写金额 2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...
- C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库
C# DateTime的11种构造函数 别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...
- C#开发windows服务如何调试——资料整理
原文标题:C# Windows服务程序如何进行调试 原文地址:https://jingyan.baidu.com/article/456c463b18e1b00a583144b3.html 第一种: ...
随机推荐
- iOS 阶段学习第23天笔记(XML数据格式介绍)
iOS学习(OC语言)知识点整理 一.XML数据格式介绍 1)概念:xml是extensible markup language扩展的标记语言,一般用来表示.传输和存储数据 2)xml与json目前使 ...
- ASP.NET MVC中使用Dropzone.js实现图片的批量拖拽上传
说在前面 最近在做一个MVC相册的网站(这里),需要批量上传照片功能,所以就在网上搜相关的插件,偶然机会发现Dropzone.js,试用了一下完全符合我的要求,而且样式挺满意的,于是就在我的项目中使用 ...
- 【C#进阶系列】19 可空值类型
可空值类型,正如字面意义上的,是可以为NULL的值类型. 这个东西存在的意义可以解决比如数据库的的Int可以为NUll的情况,使得处理数据库数据更简单. 实际上可空值类型就是Nullable<T ...
- vim 使用说明
=========================================================本使用说明与 把VIM打造成IDE 配套======================= ...
- SSH实例(7)
运行结果. 浏览课程: 添加课程: 还有删除课程,这里就不演示了.
- phpcms 二次开发数据过滤的技巧
参数过滤 1,针对不能直接使用pdo进行参数绑定,可以使用sprintf模拟,并使用new_addslashes来过滤,然后使用query执行拼接的sql %% - 返回百分比符号 %b - 二进制数 ...
- easyui datagrid 点击表头的事件
在用datagrid的时候我们可能要用到点击表头来触发一个function,这里有个简单的例子. 首先你得有个能用的datagrid. <div> <table id=&quo ...
- Hibernate 配置 双向 对多关联 (未完待续·······)
从生疏到熟练 是要经历多少遍的练习? 这答案只能向自己找. 以Student和Course为例,一个学生可以选多门课程,一门课程也可以被多个学生选取: 首先 我们创建 ...
- 【Spring】Spring框架之Struts2和Spring的优点
Java Web开发使用Structs2和Spring框架的好处 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术 ...
- jQuery动态提示消息框效果
效果预览:http://keleyi.com/keleyi/phtml/jqtexiao/2.htm 原文:http://keleyi.com/a/bjac/hxv86dyi.htm <!DOC ...