创建 Windows 服务可以让我们的程序在后台运行,从而实现一些后台任务,例如数据同步、邮件服务等。C#作为一门强大的编程语言,可以很方便地创建Windows服务。本文将提供C#创建控制Windows服务的完整攻略,内容包括创建 Windows 服务、安装和卸载服务、启动和停止服务,以及包含两个示例说明。
创建 Windows 服务
创建 Windows 服务可以使用 Visual Studio 的“Windows 服务”项目模板。通过以下步骤创建 Windows 服务:
- 打开 Visual Studio,选择“新建项目”。
- 在“新建项目”对话框中,选择“Visual C#”、 “Windows”、“Windows 服务”并添加服务名称。
- Visual Studio将会为您创建一个 C# Windows 服务项目。您可以通过“Service1.cs”文件自定义服务逻辑代码。
安装和卸载 Windows 服务
安装服务:
- 打开命令提示符(作为管理员运行)。
- 输入以下命令,将程序集正确替换:
sc create serviceName binPath= "C:\Service1\Service1.exe"
其中serviceName是您的服务名称,binPath是服务的exe路径。
卸载服务:
- 打开命令提示符(作为管理员运行)。
- 输入以下命令:
sc delete serviceName
启动和停止 Windows 服务
在 C# 中启动和停止 Windows 服务非常简单。您可以使用以下代码段实现启动和停止服务:
启动服务:
ServiceController serviceController = new ServiceController(serviceName);
if (serviceController.Status == ServiceControllerStatus.Stopped)
{
serviceController.Start();
serviceController.WaitForStatus(ServiceControllerStatus.Running);
}
其中,serviceName是您的服务名称。
停止服务:
ServiceController serviceController = new ServiceController(serviceName);
if (serviceController.Status == ServiceControllerStatus.Running)
{
serviceController.Stop();
serviceController.WaitForStatus(ServiceControllerStatus.Stopped);
}
示例说明
下面提供两个简单的示例说明:
示例1:Windows 服务运行定时任务
该示例将创建一个 Windows 服务来执行定时任务。
- 创建一个windows服务项目
- 在项目的服务类(Service1.cs)添加定时器任务并设置时间间隔
private Timer _timer = null; //定时器
public Service1()
{
InitializeComponent();
_timer = new Timer();
_timer.Interval = 60 * 1000;//每隔1分钟执行一次任务
_timer.Elapsed += new ElapsedEventHandler(timer_Elapsed);
}
- 实现定时任务操作方法:
private void timer_Elapsed(object sender, ElapsedEventArgs e)
{
//定时具体任务
}
- 在OnStart()方法中启动计时器
protected override void OnStart(string[] args)
{
_timer.Start();
}
示例2:Windows 服务实现文件夹监控
该示例将创建一个 Windows 服务来监控文件夹中文件的更改并将更改写入日志文件。
- 创建一个windows服务项目
- 读取监视文件夹列表,一旦文件夹中的文件更改,则写入日志文件的逻辑代码:
private void OnChanged(object source, FileSystemEventArgs e)
{
//写入日志文件的逻辑
}
- 在OnStart()方法中,将监控添加到多个文件夹:
protected override void OnStart(string[] args)
{
FileSystemWatcher watcher = new FileSystemWatcher();
watcher.Path = @"c:\";
watcher.Filter = "*.txt";
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName;
watcher.Changed += OnChanged;
watcher.Created += OnChanged;
watcher.Deleted += OnChanged;
watcher.Renamed += OnRenamed;
watcher.EnableRaisingEvents = true;
}
以上就是本篇文章的内容,如果您在创建 Windows 服务时遇到了问题,可以参考我们的攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#创建控制Windows服务 - Python技术站