.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 第一种: ...
随机推荐
- java的if else语句入门
条件语句,是程序中根据条件是否成立进行选择执行的一类语句,这类语句在实际使用中,难点在于如何准确的抽象条件.例如实现程序登录功能时,如果用户名和密码正确,则进入系统,否则弹出“密码错误”这样的提示框等 ...
- ASP.NET防御XSS跨站攻击
目前做ASP.NET项目的时候就有遇到过“用户代码未处理HttpRequestValidationException:从客户端***中检测到有潜在危险的 Request.Form/Request.Qu ...
- $("").click与onclick的区别示例介绍
Html代码: <script type="text/javascript"> $(function(){ $("#btn4").click(fun ...
- 孙鑫MFC学习笔记10:画图/贴图
1.SetPixel在指定点设置像素 2.虚线.点线宽度必须为1 3.CColorDialog创建颜色对话框 4.需要设置CC_RGBINIT标志才能设置颜色对话框的默认颜色 5.CC_FULLOPE ...
- 把VIM打造成IDE
======================================= 安装vim相关软件 =============== ...
- mysql笔记第三天
一下午在学习mysql,最有价值的就是这一点点 Order by 可以对在select字句中出现的字段位置进行排列eg:select name,count(*) from eg group by na ...
- 阿里巴巴笔试整理系列 Session2 中级篇
1知识点储备-----2笔试题总结-----3面试经验总结 知识点储备 2014年8月29日在线笔试题:20单选(40分钟内完成)+附加题(2道编程+1道问答) 1. 通过算法生成的随机数是“伪随机” ...
- Java集合源码分析(一)
Java集合工具包位于Java.util包下,包含了很多常用的数据结构,如数组.链表.栈.队列.集合.哈希表等.学习Java集合框架下大致可以分为如下五个部分:List列表.Set集合.Map映射.迭 ...
- GC之详解CMS收集过程和日志分析
2016-08-23 关于GC的算法和垃圾收集器的种类就暂且不说了,网上有大把的资料供参考 话题引入 让我们先简单的看下整个堆年轻代和年老代的垃圾收集器组合(以下配合java8完美支持,其他版本可 ...
- 最短的数字判断代码 js
转自 http://www.cnblogs.com/snandy/p/3590186.html 我们知道JavaScript提供了typeof运算符,因此最容易想到的是用typeof来判断是否是nu ...