要使用C#创建Windows服务,可以按照以下步骤操作:

  1. 打开Visual Studio并创建新项目。在新建的项目窗口中,选择“Windows服务”模板,并为您的项目指定名称。

  2. 创建一个类,继承自

System.ServiceProcess.ServiceBase

类。这个类将会包含您的Windows服务的主要逻辑。在这个类中,您需要实现OnStart()和OnStop()方法来处理服务启动和停止事件。OnStart()方法中,您应该放置您的服务的初始化逻辑。OnStop()方法中,您应该放置您的服务的停止逻辑。 比如

  public partial class MemoryUsageLoggerService : ServiceBase
	{
		private Timer timer;
		private string logFilePath = "C:\\\\MemoryUsage.log";
		public MemoryUsageLoggerService()
    {
        InitializeComponent();
    }

    protected override void OnStart(string[] args)
    {
        // 初始化并启动计时器
        timer = new Timer();
        timer.Interval = 1000; // 每隔1秒钟执行一次
        timer.Elapsed += new ElapsedEventHandler(OnTimer);
        timer.Enabled = true;

        WriteToLog("服务已启动");
    }

    protected override void OnStop()
    {
        // 停止计时器
        timer.Enabled = false;

        WriteToLog("服务已停止");
    }

    private void OnTimer(object sender, ElapsedEventArgs e)
    {
        // 获取当前进程的内存占用率
        float memoryUsage = Process.GetCurrentProcess().WorkingSet64 / (float)1024 / 1024;

        // 写入日志文件
        string logMessage = $"[{DateTime.Now}] 内存占用率: {memoryUsage:F2} MB";
        WriteToLog(logMessage);
    }

    private void WriteToLog(string logMessage)
    {
        // 写入日志文件
        using (StreamWriter writer = new StreamWriter(logFilePath, true))
        {
            writer.WriteLine(logMessage);
        }
    }
}

  1. 在Visual Studio中的“Program.cs”文件中,编写程序入口点代码。您需要实例化您的服务类并将其提交给
ServiceBase.Run()

方法来启动服务。例如,下面的代码演示了如何在入口点中启动您的服务:

static void Main(string[] args) { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new MyService() }; ServiceBase.Run(ServicesToRun); }

  1. 在“项目”菜单中选择“添加新项”,然后创建一个空的安装程序。在安装程序类中,您需要实现Install()和Uninstall()方法来安装和卸载您的服务。在Install()方法中,您应该编写代码来安装您的Windows服务。在Uninstall()方法中,您应该编写代码来卸载您的Windows服务。

  2. 编译您的Windows服务项目,并使用命令行工具(如sc.exe)来安装服务。例如,下面的命令将安装名为“MyService”的Windows服务:

sc create MyService binPath= "C:\\Path\\To\\MyService.exe"
  1. 您可以使用Windows的服务管理器来启动和停止您的服务,或使用命令行工具(如net start和net stop)。例如,下面的命令将启动名为“MyService”的Windows服务:
net start MyService
  1. 如果要卸载服务,使用命令行工具
sc delete MyService

日期:二〇二三年四月十二日