• C#编写Windows 服务


          Microsoft Windows 服务(即,以前的 NT 服务)使您能够创建在它们自己的 Windows 会话中可长时间运行的可执行应用程序。这些服务可以在计算机启动时自动启动,可以暂停和重新启动而且不显示任何用户界面。这使服务非常适合在服务器上使用,或任何时候,为了不影响在同一台计算机上工作的其他用户,需要长时间运行功能时使用。还可以在不同于登录用户的特定用户帐户或默认计算机帐户的安全上下文中运行服务。

         使用Microsoft Visual Studio2012可以很方便的创建一个Windows服务,本例实现一个向D盘的txt文件里,写入系统时间的Windows服务。

         新建一个Windows Services工程:

     

    工程创建好之后,默认会有一个Services1.cs文件,删掉此文件,重新添加一个新Item

    右击新添加的这个文件,选择View code,可以看到,有两个函数 OnStart和OnStop,OnStart函数在启动服务时执行,OnStop函数在停止服务时执行。

    这两个函数的代码如下:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Diagnostics;
     6 using System.Linq;
     7 using System.ServiceProcess;
     8 using System.Text;
     9 using System.Threading.Tasks;
    10 using System.IO;
    11 
    12 namespace MyFirstWindowsService
    13 {
    14     partial class MyWindowsService : ServiceBase
    15     {
    16         public MyWindowsService()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         protected override void OnStart(string[] args)
    22         {
    23             // TODO: Add code here to start your service.
    24             FileStream fileStream = new FileStream(@"D:MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
    25 
    26             StreamWriter streamWriter = new StreamWriter(fileStream);
    27 
    28             streamWriter.BaseStream.Seek(0, SeekOrigin.End);
    29 
    30             streamWriter.WriteLine("My service started" + DateTime.Now.ToString() + "
    ");
    31 
    32             streamWriter.Flush();
    33 
    34             streamWriter.Close();
    35 
    36             fileStream.Close();
    37         }
    38 
    39         protected override void OnStop()
    40         {
    41             // TODO: Add code here to perform any tear-down necessary to stop your service.
    42             FileStream fileStream = new FileStream(@"D:MyWindowsService.txt", FileMode.OpenOrCreate, FileAccess.Write);
    43 
    44             StreamWriter streamWriter = new StreamWriter(fileStream);
    45 
    46             streamWriter.BaseStream.Seek(0, SeekOrigin.End);
    47 
    48             streamWriter.WriteLine("My service stopped " + DateTime.Now.ToString() + "
    ");
    49 
    50             streamWriter.Flush();
    51 
    52             streamWriter.Close();
    53 
    54             fileStream.Close();
    55         }
    56     }
    57 }

    之后需要新建一个安装组件MyWindowsServiceProjectInstaller(右击MyWindowsService.cs这个文件选择view desiner,然后选择Add Installer),需要将MyFirstWindowsServiceProcessInstaller的account属性设置为localservice.

    编写批处理文件:

     安装服务批处理:

    1 %SystemRoot%Microsoft.NETFrameworkv4.0.30319installutil.exe C:Usersgaoja1DesktopMyWindowsServiceMyFirstWindowsServiceinDebugMyFirstWindowsService.exe
    2 Net Start ServiceTest
    3 sc config ServiceTest start= auto

    卸载服务批处理:

    %SystemRoot%Microsoft.NETFrameworkv4.0.30319installutil.exe /u C:Usersgaoja1DesktopMyWindowsServiceMyFirstWindowsServiceinDebugMyFirstWindowsService.exe

    服务安装好之后:

    服务启动之后可以在D盘看到一个txt的文件,里面记录了服务的启动时间.

  • 相关阅读:
    张艾迪:全面开放“A"计划
    张艾迪(创始人):我们是激情与开放的世界
    张艾迪(创始人):由产品集合到创新的引领
    张艾迪(创始人):Be.Time+Cr.Idear的创新理念
    张艾迪(创始人): 整合全新的UIW.AD概念
    张艾迪(创始人): 整合全新的UIW.AD概念模式
    腾讯会员免费领取试用免费腾讯视频vip共享
    golang二进制bit位的常用操作
    golang ntp协议客户端
    imagecreatefrombmp、imagebmp php处理bmp文件
  • 原文地址:https://www.cnblogs.com/GaoHuhu/p/3156989.html
Copyright © 2020-2023  润新知