项目需求要做一个定时扫表,将按条件查询到的数据插入或者更新到另一个数据表的需求,老大要求让用window service来做

因为以前没有做过,把这次的经历写出来.作为备忘.

1.什么是windows服务

以下部分内容来自http://www.cnblogs.com/salomon/archive/2012/05/21/2511643.html

Windows服务,微软的官方定义是这样的:Microsoft Windows 服务(即以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的

可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这些功能使服务非常适合在服务器上使用,每当

需要使用不会影响在同一台计算机上工作的其他用户的功能时也适用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

这种描述过于抽象而且笼统。那么究竟什么是服务呢?首先Windows服务和普通应用一样是是一个应用程序,一个后台进程。但它又十分特殊,特殊在以

下几点:

  1.它通常在系统启动时用户登录Windows之前由NET kernel中的SCM(Service Control manager)加载,并一般在系统启动时自动开启的。

  2.Windows服务独立于特定用户之上,也就是说它可以被一台计算机上任何用户所共用。

如果一个应用需要长时间的后台运行,并且独立于某个特定用户控制台,我们可以考虑把它写成Windows服务。它通常没有界面(没有硬性限制,可以编

写有界面的Windows服务),通常随机启动,随机关闭而关闭,但也可以随用户需要手动启动,一般两种方法:1 Control Panel -> Administrative Tools

-> Services  2,由其它程序调用SCM提供的接口开启。类似于Windows服务东西比如UNIX的daemons,Dos下的运行于AUTOEXEC.BAT或者 CONFIG.SYS的TSR。常见的服务包括硬件驱动(打印机等),FTP服务,数据库服务,WEB服务等等。

2.编写

2.1 首先创建windows服务项目

如图,我们在创建项目的时候选择windows 服务项目.来进行创建

2.2编写业务逻辑代码

我们也可以将服务类 进行重命名. 这里的OnStart方法在服务启动的时候调用,

所以我们可以将业务逻辑写在这里.建议封装一个类和方法来封装业务逻辑操作,然后在这里调用该类的方法

OnStop方法在服务停止的时候调用,我们在这里可以写一些处理逻辑

3.设置服务名称和登录权限

在  服务的 的设计界面 右键-添加安装程序.会添加一个ProjectInstaller.cs 类.

这里我们需要注意两件事.

A.为设计界面中 serviceInstaller1 控件设置服务的启动类型

Automatic--自动启动

Manual--手动启动

B.设置服务启动登录权限

这里我们选择 以本地系统的权限来启动.

4.安装服务

windows 服务 微软提供了自带的安装程序 InstallUtil.exe

以管理员身份运行该程序,然后安装 你编译好的服务

cmd 会提醒你服务是否安装成功

5.查看服务状态

5.删除服务

我们在调试过程中,可能需要删除服务,然后修改代码.然后重新安装服务,再次调试.

注意,必须先删除服务 否者生成失败.

注意,删除服务之前必须先停止服务.否则删除失败.

建议开两个 CMD不要关闭 一个安装 一个删除,

6.进行服务调试

发开的时候我们要测试业务逻辑和我们预期的是否一致,但是调试服务又很麻烦.

我们可以在Program.cs

 static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
{
new Service1()
};
ServiceBase.Run(ServicesToRun);
}

在这里调用你的业务类.new 出来直接调用

下面的注释掉.

Main函数也是这个服务启动的入口.

我们将服务安装到本机并且启动之后,也可以以附加到进程的方式调试服务运行

编写Windows Service 备忘的更多相关文章

  1. C# 编写Windows Service(windows服务程序)

    C# 编写Windows Service(windows服务程序)   Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成特定功能的可执行的应用程序.W ...

  2. 分别在.NET Framework 与 .NET Core 框架下 编写Windows Service(windows服务程序)

    前言,为什么会分别在两个框架下编写Windows Service,是因为最近在做区块链这块,使用的是NEO(小蚁区块链)的相关技术,NEO使用的是.net core 2.1,业务上需要写两个程序,一个 ...

  3. Bonobo Git Server (Simple git server for Windows.) 测试备忘

    Bonobo Git Server是一款Windows上的Git Server,它使用IIS即可,走的是Http协议,只要简单的安装就能使用,但是因为我的项目大小有1.35GB在 push 的时候一直 ...

  4. C# 编写Windows Service(windows服务程序)【转载】

    [转]http://www.cnblogs.com/bluestorm/p/3510398.html Windows Service简介: 一个Windows服务程序是在Windows操作系统下能完成 ...

  5. C++ 编写Windows service

    最近实现一个windows server端守护进程启动服务功能(c++实现),遇到了一些问题,记录一下 1. 启动Service实现代码: int _tmain(int argc, TCHAR* ar ...

  6. windows端口备忘

    FTP 端口号21 SSH 端口号22 Telnet 端口号23

  7. windows shell备忘

    1.查找占用80端口的进程idnetstat -aon|findstr "80" 2.查找进程id为"1000"的进程名tasklist|findstr &qu ...

  8. 安装windows系统备忘

    1.已写入系统镜像的U盘 2.激活工具(同时激活系统及office) 3.如果没有网口或网线,需要准备万能网卡驱动 4.office 5.360 6.输入法 7.微信 8.谷歌浏览器

  9. 使用Windows Service Wrapper快速创建一个Windows Service

    前言 今天介绍一个小工具的使用.我们都知道Windows Service是一种特殊的应用程序,它的好处是可以一直在后台运行,相对来说,比较适合一些需要一直运行同时不需要过多用户干预的应用程序,这一类我 ...

随机推荐

  1. 光流和KLT

    一 光流 光流的概念是Gibson在1950年首先提出来的. 它是空间运动物体在观察成像平面上的像素运动的瞬时速度.是利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存 ...

  2. C#和Java中执行SQL文件脚本的代码(非常有用)

    原文:C#和Java中执行SQL文件脚本的代码(非常有用) 我们在做程序的时候有事后会涉及到利用sql文件 直接执行,可是在sql文件中有很多注释,我们要一句一句的执行首先必须的得把sql文件解析 去 ...

  3. Android第一次打开应用程序,实现向导界面

    转载请注明出处,谢谢http://blog.csdn.net/harryweasley/article/details/42079167 先说下思路:1.利用Preference存储数据,来记录是否是 ...

  4. 导入三方包,出现ClassNotFoundException

    在项目中须要引用settings模块里面的某个活动.在eclipse中导入settins.jar包之后,使用例如以下方式启动: Intent intent = new Intent(); intent ...

  5. android进度条

    android进度条 1.达到的效果 2.布局代码 先写一个my_browser.xml文件 存放WebView <?xml version="1.0" encoding=& ...

  6. 高性能网络server--I/O复 select poll epoll_wait之间的差

    一个.select 方式作为收集,最多只能监控1024描述叙事断裂的文件,内部使用位操作,相应的位置1或设置0,必须是可读.可写.三类除单独的事件,内部查询方法.将全部的套接字从内核到用户空间之间进行 ...

  7. Hadoop之环境搭建

    初学Hadoop之环境搭建   阅读目录 1.安装CentOS7 2.安装JDK1.7.0 3.安装Hadoop2.6.0 4.SSH无密码登陆 本文仅作为学习笔记,供大家初学Hadoop时学习参考. ...

  8. String不变性

    String不变性理解类型: String x = "java"; System.out.println(x);//输出为java x.concat("java" ...

  9. 【转】UIAutomator定位Android控件的方法实践和建议(Appium姊妹篇)

    原文地址:http://blog.csdn.net/zhubaitian/article/details/39777951 在本人之前的一篇文章<<Appium基于安卓的各种FindEle ...

  10. OData语法

    OData 1-4 OData语法(上) 如果眼下提供OData的服务地址是 http://localhost:9527/ODataService.svc 提供的服务内容例如以下所看到的 (提供了一个 ...