zoukankan      html  css  js  c++  java
  • Quartz.Net系列(十一):System.Timers.Timer+WindowsService实现定时任务

    1.创建WindowsService项目

     2.配置项目

     3.AddInstaller(添加安装程序)

     4.修改ServiceName(服务名称)、StartType(启动类型)、Description(说明)、DisplayName(显示名称)

    StartType共有五种类型:Boot(开机启动)、Automatic(自动)、System(系统)、Manual(手动)、Disabled(禁用)

     5.选择Account:LocalSystem

    Account共有五种:LocalSystem(本地系统)、LocalService(本地服务)、NetworkService(网络服务)、User(用户)

     6.编写Timer触发器

    using Microsoft.SqlServer.Server;
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.ServiceProcess;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace WindowsService_Demo
    {
        public partial class WindowServiceDemo : ServiceBase
        {
            private System.Timers.Timer _timer=null;
            public WindowServiceDemo()
            {
                InitializeComponent();
            }
    
            /// <summary>
            /// 服务启动
            /// </summary>
            /// <param name="args"></param>
            protected override void OnStart(string[] args)
            {
                //实例化定时器 并设置间隔为1秒
                _timer = new System.Timers.Timer(6000);
    
                //_timer.Interval = 6000; 设置间隔为1秒
    
                _timer.Start(); //_timer.Enabled=true;
    
                WriteText("定时服务开始了");
    
                _timer.Elapsed += Timer_Elapsed;
            }
    
            private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
            {
                WriteText("定时服务正在执行");
            }
    
            /// <summary>
            /// 服务停止
            /// </summary>
            protected override void OnStop()
            {
                _timer?.Close();
                WriteText("定时服务停止了");
            }
    
            private static void WriteText(string message)
            {
                string path = AppDomain.CurrentDomain.BaseDirectory + "Log\";
    
                string fullPath = path + "log.txt";
    
                StreamWriter streamWriter=null;
    
                try
                {
                    if (!Directory.Exists(path))
                    {
                        Directory.CreateDirectory(path);
                    }
    
                    if (!File.Exists(fullPath))
                    {
                        streamWriter = File.CreateText(fullPath);
                    }
    
                    else
                    {
                        streamWriter = File.AppendText(fullPath);
                    }
    
                    streamWriter.WriteLine(message +"----------------------"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                finally
                {
                    streamWriter?.Close();
                }                     
            }
        }
    }

    7.新建install.bat和uninstall.bat文件(dos下的批处理文件) pause(表示按任意键结束)

    install.bat

    c:
    cd C:WINDOWSMicrosoft.NETFrameworkv4.0.30319
    InstallUtil.exe -i F:projectdotnetWindowsService-DemoWindowsService-DemoinDebugWindowsService-Demo.exe
    net start WindowServiceDemo
    sc config WindowServiceDemo start=auto
    pause

    uninstall.bat

    c:
    cd C:WINDOWSMicrosoft.NETFrameworkv4.0.30319
    InstallUtil.exe -i F:projectdotnetWindowsService-DemoWindowsService-DemoinDebugWindowsService-Demo.exe
    net start WindowServiceDemo
    sc config WindowServiceDemo start=auto
    pause

    8.运行(必须以超级管理员身份)

    以管理员身份运行intsall.bat

     查看日志

     9.停止Window服务(必须以超级管理员身份)

    执行uninsatll.bat

  • 相关阅读:
    MVC ORM 架构
    Kubernetes 第八章 Pod 控制器
    Kubernetes 第七章 Configure Liveness and Readiness Probes
    Kubernetes 第六章 pod 资源对象
    Kubernetes 第五章 YAML
    Kubernetes 核心组件
    Kubernetes 架构原理
    Kubernetes 第四章 kubectl
    Kubernetes 第三章 kubeadm
    yum 配置及yum 源配置
  • 原文地址:https://www.cnblogs.com/vic-tory/p/13280155.html
Copyright © 2011-2022 走看看