项目需求要做一个定时扫表,将按条件查询到的数据插入或者更新到另一个数据表的需求,老大要求让用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. java volatile的一个验证反例(转)

    网上关于java volatile的资料已经不少了,但搜了好久也没看到谁用代码很好地验证过使不使用volatile的差异.最近自己写了个测试,意外的看到了两者的明显区别,为什么说意外呢,因为根据我的测 ...

  2. MySQL学习系列2--MySQL执行计划分析EXPLAIN

    原文:MySQL学习系列2--MySQL执行计划分析EXPLAIN 1.Explain语法 EXPLAIN SELECT …… 变体:   EXPLAIN EXTENDED SELECT …… 将执行 ...

  3. Linux对于录音

    一.原理简介 在Linux下,记录--从dsp读取数据.播放--至dsp设备写入数据. 开发板採用声卡UDA1341实现音频编解码,完毕A/D和D/A转换,芯片UDA1341与CPU的连接图例如以下: ...

  4. 使用nodeitk进行对象识别

    前言 东莞,晴,29至27度.忙了一天,最终能够写写东西了.今天继续昨天的话题,我们在昨天的例了基础上完好,通过匹配关键点求出映射从而找到场景中的已知对象. 目标 本文你将学习 採用nodeitk的f ...

  5. C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码)

    原文:C# 实现对接电信交费易自动缴费 续(winio/winring0 自动填密码) 自动填密码大家可能都不莫生,最有名的应该是 按键精灵 只要是一个可以输入的地方都可以能过按键精灵来完成输入.我今 ...

  6. 关于通过id查询记录的一些总结

    最近在做一个oa系统,简化了账号的设置,列名均为id,类型均为varchar:有的表将id设置成了主键,有的表没有设置成主键. 通过举例说明通过id查询的一些问题. 之前登陆的时候,账号001-007 ...

  7. crawler_爬虫代理方案

    爬虫往往会遇到各种限制ip问题 理方案(爬虫) IP代理软件 优势标记: 是 自动切换IP 基本无开发成本标记: 黄色, 考虑切换IP时 ,网络瞬时异常 IP池,由商家维护 劣势标记: 非 部署 每个 ...

  8. idea类似eclipse鼠标技巧java api信息

    版权声明:本文博客原创文章,博客,未经同意,不得转载.

  9. Oracle分区表转换

    Oracle普通表—>分区表转换(9亿数据量) 背景介绍: 环境:Linux 5.5 + Oracle 10.2.0.4 某普通表T,由于前期设计不当没有分区,如今几年来的数据量已达9亿+, 空 ...

  10. 怎样才能充分利用SQL索引

    原文:怎样才能充分利用SQL索引 背景:目前WEB的普及太快,很多网站都会因为大流量的数据而发生服务器习惯性死机,一个查询语句只能适用于一定的网络环境.没有优化的查询当遇上大数据量时就不适用了. 本文 ...