下面将为你详细讲解“C#创建Windows服务与服务的安装、卸载”的完整攻略。
1. 创建 Windows 服务
1.1 使用 Visual Studio 创建服务项目
打开 Visual Studio,选择“文件”-“新建”-“项目”,在“新建项目”窗口中选择“Windows 服务”项目模板,点击“确定”按钮创建项目。
1.2 设计服务程序
服务程序类必须继承自System.ServiceProcess.ServiceBase
类,并重写OnStart
和OnStop
方法。例如:
using System.ServiceProcess;
namespace MyService
{
public partial class MyService : ServiceBase
{
public MyService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
// TODO: 服务启动时的处理
}
protected override void OnStop()
{
// TODO: 服务停止时的处理
}
}
}
1.3 安装 Windows 服务
在 Visual Studio 中打开“命令提示符”,使用 installutil
命令安装服务。例如:
installutil MyService.exe
安装完成后,在 Windows 服务管理器中可以看到新创建的服务并可以控制它的启动、停止等操作。
2. 卸载 Windows 服务
卸载服务也需要在命令提示符下使用 installutil
命令。例如:
installutil /u MyService.exe
示例说明
示例1
创建一个简单的服务,每分钟向 Windows 事件日志写入一条信息。
-
打开 Visual Studio,选择“文件”-“新建”-“项目”,在“新建项目”窗口中选择“Windows 服务”项目模板,点击“确定”按钮创建项目。
-
打开“解决方案资源管理器”,在“项目”文件夹下右键点击“添加”-“新建项”,选择“代码文件”,命名为
MyService.cs
。 -
在
MyService.cs
中,使用如下代码实现服务内容:
```csharp
using System;
using System.Diagnostics;
using System.ServiceProcess;
using System.Threading;
namespace MyService
{
public partial class MyService : ServiceBase
{
private Timer _timer;
public MyService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
_timer = new Timer(WriteLog, null, TimeSpan.FromSeconds(0), TimeSpan.FromMinutes(1));
}
protected override void OnStop()
{
_timer.Dispose();
}
private void WriteLog(object state)
{
EventLog.WriteEntry("MyService", "Hello, Windows Service!");
}
}
}
```
-
在“生成”菜单下选择“生成解决方案”,生成服务程序。
-
在“开始菜单”中搜索“Visual Studio 开发人员命令提示符”,右键选择“以管理员身份运行”。
-
使用如下命令安装服务:
installutil MyService.exe
- 在 Windows 服务管理器中找到“MyService”,启动服务并等待一分钟,可以在 Windows 事件(应用程序)日志中看到一条“Hello, Windows Service!”的信息。停止服务后可以再次运行
installutil /u MyService.exe
命令卸载服务。
示例2
在服务中使用 SQLite 数据库存储数据。
-
创建 Windows 服务项目,并添加
System.Data.SQLite
库到项目中(可以使用 NuGet 包管理器)。 -
打开“解决方案资源管理器”,在“项目”文件夹下右键点击“添加”-“新建项”,选择“代码文件”,命名为
MyService.cs
。 -
在
MyService.cs
中,使用如下代码实现服务内容:
```csharp
using System.Data.SQLite;
using System.ServiceProcess;
namespace MyService
{
public partial class MyService : ServiceBase
{
private SQLiteConnection _connection;
public MyService()
{
InitializeComponent();
}
protected override void OnStart(string[] args)
{
_connection = new SQLiteConnection("Data Source=MyDatabase.db");
_connection.Open();
CreateTableIfNotExist();
}
protected override void OnStop()
{
if (_connection != null)
{
_connection.Close();
}
}
private void CreateTableIfNotExist()
{
var cmd = _connection.CreateCommand();
cmd.CommandText = "CREATE TABLE IF NOT EXISTS MyTable (Id INTEGER PRIMARY KEY, Name TEXT NOT NULL)";
cmd.ExecuteNonQuery();
}
}
}
```
-
在“生成”菜单下选择“生成解决方案”,生成服务程序。
-
在“开始菜单”中搜索“Visual Studio 开发人员命令提示符”,右键选择“以管理员身份运行”。
-
将 SQLite 依赖库的
sqlite3.dll
文件复制到服务程序的输出目录中。 -
使用如下命令安装服务:
installutil MyService.exe
- 运行服务并查看日志,可以看到数据库表已经创建完毕。停止服务后可以再次运行
installutil /u MyService.exe
命令卸载服务。
以上是关于“C#创建Windows服务与服务的安装、卸载”的完整攻略,部分内容可能需要根据实际情况进行调整。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#创建Windows服务与服务的安装、卸载 - Python技术站