创建项目

创建项目,在Windows下选择Windows服务(.NET Framework)。创建名称为indowsService_Test,如下图。

系统默认创建Service1.cs。

打开Serice1.cs的属性页,将ServiceName修改为ServiceTest,如下图:

添加定时器

在vs 主菜单中选“工具”项,再选“选择工具箱项”,再勾选命名空间为System.Timers的Timer,如下图:

现在在工具箱中可以看到Timer组件如下图所示。

将其拖入至Service1设计界面。将timer1的enabled 属性设置为true,Interval属性设置为1000。

双击timer1,自动生成timer1_Elapsed事件。

添加业务代码

编辑Service1.cs,引入 System.Threading命名空间并修改代码如下:

public partial classService1 :ServiceBase

{

privateThread thdStart;

privateint numTimes;

public Service1()

{

InitializeComponent();

}

protected override void OnStart(string[] args)

{

thdStart = newThread(newThreadStart(timer1.Start));

thdStart.Start();

}

protectedoverridevoid OnStop()

{

}

privatevoid timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)

{

this.timer1.Stop();

numTimes++;

string filePath =@"c:\ServiceTest.log";

string strCont =DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss") +"第" + numTimes +"次执行。";

System.IO.File.AppendAllText(filePath, strCont);

this.timer1.Start();

}

}

另一套方法也可行且更简洁,如下:

protected override void OnStart(string[] args)
        {   
            timer1.Start();
         }

private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            timer1.Enabled = false; ;
            Serv.Start();
            timer1.Enabled = true; ;
        }

这里把所要执行的方法写在自定义的Serv类里,这样我们可以在项目中增加一个Form,在Form中添加一个System.windows.Forms.Timer时钟,并设置如下代码:

private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            Serv.Start();
            timer1.Enabled = true;

}

再将program.cs的main方法改为

static void Main()
        {

//ServiceBase[] ServicesToRun;
            //ServicesToRun = new ServiceBase[]
            //{
            //    new Service1()
            //};
            //ServiceBase.Run(ServicesToRun);

Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());

}

这时就可以执行程序来调试Serv类里的方法了。调试正确后,将再将program.cs的main方法改回来即可。

为WindowsService_Test添加安装程序

在Service1设计界面下,右键弹出菜单,选择“添加安装程序”

在serviceProcessInstaller1属性页中将Account由User改为LocalSystem,

生成服务

生成项目。

新建一个目录,将项目的\bin\Debug目录下生成的所有文件拷贝到该新的目录,再在该目录下建两个批出处理文件,文件名可分别为install.bat和uninstall.bat,内容分别如下:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe  /i WindowsService_Test.exe

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\installutil.exe  /u WindowsService_Testr.exe

注意:如果由于某种原因而使生成的平台目标设为x86,则命令中的framework64要改成framework.

部署和卸载服务

以部署到windows server 2008服务器为例,先须安装NDP462-KB3151800-x86-x64-AllOS-ENU.exe即.netframework 4.6.2,如果在内网环境下安装.net4.6.2,则需要安装
MicrosoftRootCertificateAuthority2011.cer证书。安装此证书的过程大楖如下:
    1.下载证书:http://go.microsoft.com/fwlink/?LinkID=747875&clcid=0x409;
    2.开始-运行-MMC
    3.文件-删除管理单元(Ctrl+M)
    4.证书-计算机帐户(其他的保持默认,无限下一步)。
    5.回到窗体,展开:证书-受信任的根证书颁发机构-证书。
    6.右击展开菜单,所有任务-导入

7.选择下载好的cer文件,然后无限下一步。

NDP462-KB3151800-x86-x64-AllOS-ENU.exe安装完毕后(部署到windows server 2016上时不需安装.net4.6.2这个此步骤),将上述的文件夹拷贝到服务器的磁盘上,双击运行其中的install.bat即可完成安装,也可在命令窗口中执行install.bat进行安装,但必须用管理身份打开命令窗口。然后再打开管理工具-服务,找到WindowsService_Test项,双击后点“启动”即可启动服务,往后服务启动时会自动启动该服务。

要卸载服务,只需要运行上述已经拷贝到服务器的磁盘中的文件夹内的uninstall.bat文件即可。

用 vs 2017创建 windows 服务相关推荐

  1. 用.NET创建Windows服务

    用.NET创建Windows服务 译者说明:我是通过翻译来学习C#的,文中涉及到的有Visual Studio.NET有关操作,我都根据中文版的VS.NET显示信息来处理的,可以让大家不致有误解. 作 ...

  2. 用C#创建Windows服务(Windows Services)

    转载自 hyslove 最终编辑 hyslove Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是 ...

  3. 杂记2:VS2013创建Windows服务实现自动发送邮件

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

  4. C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案

    C#/.NET基于Topshelf创建Windows服务的守护程序作为服务启动的客户端桌面程序不显示UI界面的问题分析和解决方案 参考文章: (1)C#/.NET基于Topshelf创建Windows ...

  5. (转)创建Windows服务(Windows Services)N种方式总结

    转自:http://www.cnblogs.com/aierong/archive/2012/05/28/2521409.html 最近由于工作需要,写了一些windows服务程序,有一些经验,我现在 ...

  6. *用C#创建Windows服务(Windows Services)

    Windows服务在Visual Studio 以前的版本中叫NT服务,在VS.net启用了新的名称.用Visual C# 创建Windows服务不是一件困难的事,本文就将指导你一步一步创建一个Win ...

  7. 在64位windows下使用instsrv.exe和srvany.exe创建windows服务

    在64位windows下使用instsrv.exe和srvany.exe创建windows服务 在32位的windows下,包括windows7,windows xp以及windows 2003,都可 ...

  8. C# — 创建Windows服务

    以前从来没有接触过C#,对Windows服务也完全不了解,今天通过使用VS2017创建了一个Windows服务,并进行了安装和卸载,目前也是一知半解的地步,简单的做个笔记记录一下,也算是复习了吧. 第 ...

  9. python windows服务_Python创建Windows服务

    首先让我们开始安装Python for Windows扩展: c:test>pip install pywin32 完成后,让我们编写该基类,您的Windows服务将是该基类的子类. ''' S ...

最新文章

  1. 资料分享:送你一本《数据结构(C#语言版)》电子书!
  2. JS 使用html2canvas实现截图功能的问题记录和解决方案
  3. php等待程序时间,php页面程序运行需要时间,怎么给客户提示?
  4. APUE读书笔记-12线程控制-04同步属性
  5. 第六届 蓝桥杯 省赛 Java B组 牌型总数
  6. number two
  7. CCNA-第十五篇-DHCP配置+SDN介绍(最后一章)
  8. 前两年在MSDN里找到的HTC示例,一直没用过,先在这里存个备份
  9. 2013年度开源社区年会,3W咖啡免费让你更多接触开源
  10. linux下编译webkit,ubuntu下编译webkit
  11. ASP.NET判断是否为手机登录
  12. mybatis分页插件_MyBatis 分页插件 5.2.0 发布
  13. 《Greenplum5.0 最佳实践》 系统监控与维护 (五)
  14. json文件内容+csv保存文件[Python]
  15. 《高等代数学》(姚慕生),习题1.1:二阶行列式
  16. iPhone屏幕尺寸
  17. 采购经理人指数(PMI)
  18. 点量云流化技术在云游戏和虚拟仿真教学中有啥优势?
  19. c语言26字母排序,C语言,26个字母的冒泡排序
  20. LiteOS学习笔记-9LiteOS SDK oc流程之MQTT

热门文章

  1. python基础教程视频纸飞机_蜗牛笔记-文章-全年专题直播课四月课表正式上线!​...
  2. 闪存Nand Flash存储结构浅析
  3. 【vscode高级玩家】设置酷炫字体Fira Code
  4. CATIA和SOLIDWORKS哪款软件更好学?
  5. 如何使用 jQuery 刷新页面?
  6. bzoj3252攻略(线段树+dfs序)
  7. 关于缺少msvcp110.dll
  8. oracle adf 数据validation,ORACLE ADF 问题总结
  9. c#中关于textbox换行
  10. 公务员笔试讲义——资料分析3