• C# 如何使用windows服务做定时任务


    在 C# 中,你可以使用 Windows 服务来创建定时任务。以下是创建定时任务的步骤:

    1. 创建一个新的 Windows 服务项目:

      • 打开 Visual Studio。
      • 选择 “创建新项目”。
      • 在搜索框中搜索 “Windows 服务”。
      • 选择 “Windows 服务” 模板,并设置名称和位置。
      • 点击 “确定”。
    2. 在服务项目中,打开“Service1.cs”文件,将其重命名为合适的名称,例如 “MyService.cs”。

    3. 在服务类中,通过重写 OnStart 方法和 OnStop 方法来定义服务的启动和停止逻辑。

      protected override void OnStart(string[] args)
      {
          // 在服务启动时执行的代码
      }
      
      protected override void OnStop()
      {
          // 在服务停止时执行的代码
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    4. 添加定时任务逻辑。可以使用 System.Timers.Timer 类来创建定时器,并在定时器的 Elapsed 事件中执行定时任务的代码。在 OnStart 方法中创建并启动定时器,在 OnStop 方法中停止定时器

      private System.Timers.Timer timer;
      
      protected override void OnStart(string[] args)
      {
          timer = new System.Timers.Timer();
          timer.Interval = 60 * 1000; // 设置定时器的间隔(以毫秒为单位)
          timer.Elapsed += TimerElapsed; // 绑定定时器的 Elapsed 事件处理程序
          timer.Start(); // 启动定时器
      }
      
      protected override void OnStop()
      {
          timer.Stop(); // 停止定时器
          timer.Dispose(); // 释放定时器资源
      }
      
      private void TimerElapsed(object sender, System.Timers.ElapsedEventArgs e)
      {
          // 在定时器间隔达到时执行的代码
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
    5. 在定时器的 Elapsed 事件处理程序中编写具体的定时任务逻辑。

    6. 在服务项目的属性窗口中,将项目输出类型设置为 “Windows 应用程序”。

    7. 使用管理员权限安装和运行 Windows 服务:

      • 打开命令提示符或 PowerShell,并切换到服务项目生成的输出目录。
      • 运行以下命令以安装服务:
        installutil.exe MyService.exe
        
        • 1
      • 运行以下命令以启动服务:
        net start MyService
        
        • 1

    这样,你就成功创建了一个基于 Windows 服务的定时任务。注意,在服务的 OnStart 方法中创建的定时器会随着服务的启动而开始计时,在 OnStop 方法中停止定时器,因此当服务停止时,定时任务也会停止。

  • 相关阅读:
    吉利高端品牌领克汽车携手体验家,重塑智能创新的汽车服务体验
    JavaWeb-Servlet
    MyBatis3-源码剖析
    通过HTTP发送大量数据的三种方法
    网络安全(黑客)自学
    BlueToolFixup.kext2.6.5(所有蓝牙部分驱动)
    Java中List转字符串的方法
    ChatGPT作者John Schulman:我们成功的秘密武器
    B树、B+树、红黑树的定义、之间的区别、优缺点、数据结构、应用等
    (Carousel)解决:Element-ui 中 Carousel 走马灯的样式的修改问题
  • 原文地址:https://blog.csdn.net/qq_39034148/article/details/133176828