要使用C#创建Windows服务,可以按照以下步骤操作:
打开Visual Studio并创建新项目。在新建的项目窗口中,选择“Windows服务”模板,并为您的项目指定名称。
创建一个类,继承自
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);
}
}
}
ServiceBase.Run()
方法来启动服务。例如,下面的代码演示了如何在入口点中启动您的服务:
static void Main(string[] args) { ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new MyService() }; ServiceBase.Run(ServicesToRun); }
在“项目”菜单中选择“添加新项”,然后创建一个空的安装程序。在安装程序类中,您需要实现Install()和Uninstall()方法来安装和卸载您的服务。在Install()方法中,您应该编写代码来安装您的Windows服务。在Uninstall()方法中,您应该编写代码来卸载您的Windows服务。
编译您的Windows服务项目,并使用命令行工具(如sc.exe)来安装服务。例如,下面的命令将安装名为“MyService”的Windows服务:
sc create MyService binPath= "C:\\Path\\To\\MyService.exe"
net start MyService
sc delete MyService
日期:二〇二三年四月十二日