当前位置: 首页 > news >正文

用 vs 2017创建 windows 服务

创建项目

创建项目,在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文件即可。


http://www.taodudu.cc/news/show-4974488.html

相关文章:

  • 如何将nginx安装到Windows服务
  • 【转】Go语言和Windows服务
  • C++语言编写windows服务
  • Golang 实现Windows服务
  • Qt实现Windows服务程序
  • minio:安装部署并安装成windows服务
  • C# 创建Windows Service(Windows服务)程序
  • 如何创建Windows服务
  • window服务是什么?
  • Windows服务(Service)安装及启动停止方案
  • Windows 服务介绍(本地系统、网络服务、本地服务以及相关的power shell命令
  • windows服务ServiceProcess
  • Windows 服务
  • js 解析json数据实现快递包裹的查询
  • 12、 一键查快递
  • 已知顺丰快递既可以发陆运,也可以发空运;EMS只能发空运,圆通只能发陆运。 小明现在发送快递,为其设计两个方法,分别用来发空运和陆运。
  • valgrind 工具使用
  • valgrind 工具介绍和简单的使用
  • valgrind 简介(内存检查工具)
  • 工具:valgrind学习
  • Win10下CS231n assignment1 环境配置
  • cs231n assignment2 PyTorch
  • Stanford cs231n'18 课程及作业详细解读
  • CS231n第一节
  • cs231n笔记总结
  • 【实验小结】cs231n assignment1 knn 部分
  • CS231n 两层神经网络反向传播实现
  • 【深度学习】cs231n计算机视觉 CNN(卷积神经网络)
  • FreeCAD错误:没有激活的实体 解决办法
  • springboot 整合mysql clickhouse 多数据源