今天学习了在.net下创建一个windows服务,总结一下学习心得。
    开发环境:visual studio 2012
 
一、编写程序
  (1)创建一个空解决方法
  (2)添加一个控制台应用程序项目
  (3)添加一个Windows服务,如下所示:
 
  (4)右键 查看代码
  
  看到如下代码:
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服务小结的更多相关文章

  1. 使用Visual Studio 2015 Community 开发windows服务

    昨天研究在.NET下开发Windows服务程序,期间遇到一些小问题,这里仅将自己的开发过程和需要注意的地方写下和广大网友分享……  1.基础   Windows服务是指系统启动时能够自己运行的程序.W ...

  2. C#开发Windows服务 附简单实例实现禁止QQ运行

    本实例主要实现下面三个基本功能 1.C#开发windows服务 2.禁止QQ等程序运行 3.为windows服务创建自动安装程序 下面针对这三个基本功能进行实现 一.C#开发windows服务 Win ...

  3. VS2013开发Windows服务项目

    这篇随笔里,我将介绍如何用VS2013开发Windows服务项目,实现的功能是定时发送电子邮件. 开发环境:VS2013,SQL Server2008,采用C#语言开发 步骤一:创建Windows服务 ...

  4. C#开发Windows服务详细流程

    1.Windows服务简单介绍 Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序,主要用于长时间运行的功能或者执行定时任务.一般情况下,用户不能通过用户界面来安装和启 ...

  5. 使用Topshelf开发Windows服务、log4net记录日志

    开发windows服务,除了在vs里新建服务项目外(之前有写过具体开发方法,可点击查看),还可以使用Topshelf. 不过使用topshelf需要.netframework 4.5.2版本,在vs2 ...

  6. 开发Windows服务

          在开发Windows服务时需要注意一点,如果在开发完成后,需要通过命令来进行安装的,那么在开发的时候,需要在服务类上面添加一个安装文件.如下图:               添加完成后,就 ...

  7. c#金额转换成中文大写金额 .Net开发Windows服务

    c#金额转换成中文大写金额   2018-08-24 转别人 c#金额转换成中文大写金额 /// <summary> /// 金额转换成中文大写金额 /// </summary> ...

  8. C# DateTime的11种构造函数 [Abp 源码分析]十五、自动审计记录 .Net 登陆的时候添加验证码 使用Topshelf开发Windows服务、记录日志 日常杂记——C#验证码 c#_生成图片式验证码 C# 利用SharpZipLib生成压缩包 Sql2012如何将远程服务器数据库及表、表结构、表数据导入本地数据库

    C# DateTime的11种构造函数   别的也不多说没直接贴代码 using System; using System.Collections.Generic; using System.Glob ...

  9. C#开发windows服务如何调试——资料整理

    原文标题:C# Windows服务程序如何进行调试 原文地址:https://jingyan.baidu.com/article/456c463b18e1b00a583144b3.html 第一种: ...

随机推荐

  1. NoSQL数据库介绍

    NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面.今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于N ...

  2. 介绍开源的.net通信框架NetworkComms框架 源码分析(十九 )ConnectionIncomingData

    原文网址: http://www.cnblogs.com/csdev Networkcomms 是一款C# 语言编写的TCP/UDP通信框架  作者是英国人  以前是收费的 目前作者已经开源  许可是 ...

  3. 精品干货丨APP常用导航框架

    文章目的:在整体上把握移动端App的导航框架,理解每种导航所具有的优点.局限性和其所适用的范围. 文章用心:典型APP案例(源码:http://www.jinhusns.com/Products/Do ...

  4. 【Java每日一题】20161102

    package Nov2016; public class Ques1102 implements Parent{ @Override public void method() { } } inter ...

  5. hibernate----N-1(一)

    *************************hibernate.cfg.xml <?xml version='1.0' encoding='utf-8'?> <!DOCTYPE ...

  6. 第 26 章 CSS3 动画效果

    学习要点: 1.动画简介 2.属性详解 3.简写和版本 主讲教师:李炎恢 本章主要探讨 HTML5 中 CSS3 的动画效果,可以通过类似 Flash 那样的关键帧模式控制运行. 一.动画简介 CSS ...

  7. C++11 之 nullptr

    C++11 中,nullptr 是空指针,可用来给 (指向任意对象类型的) 指针赋值 广义整型 (integral types) = char, short, int, long, long long ...

  8. OData – the best way to REST–实例讲解ASP.NET WebAPI OData (V4) Service & Client

    一.概念介绍 1.1,什么是OData? 还是看OData官网的简单说明: An open protocol to allow the creation and consumption of quer ...

  9. java内存模型-基础

    基础 并发编程模型的分类 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体).通信是指线程之间以何种机制来交换信息.在命令式编程中,线程之间 ...

  10. The template engine

    Play has an efficient templating system which allows to dynamically generate HTML, XML, JSON or any ...