【.net framework】WINDOWS服务和控制台程序简单介绍

背景: 假如现在有两个项目,分别是控制台程序和windows服务(创建项目的时候可以选择不同类型)
控制台:

csharp 复制代码
static async Task Main()
{
    while (true)
    {
        Console.WriteLine("运行中...");
        await Task.Delay(5000);
    }
}

windows服务:

csharp 复制代码
using Microsoft.Extensions.Hosting;

Host.CreateDefaultBuilder(args)
    .UseWindowsService()
    .ConfigureServices(services =>
    {
        services.AddHostedService<Worker>();
    })
    .Build()
    .Run();

public class Worker : BackgroundService
{
    protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    {
        while (!stoppingToken.IsCancellationRequested)
        {
            Console.WriteLine("服务后台运行中...");
            await Task.Delay(5000, stoppingToken);
        }
    }
}

控制台是需要自己手动启动的;windows服务在电脑开启就开始自启动运行(配置自动启动),遇到问题自动重启,因此windows服务开发完成之后需要安装和部署。

csharp 复制代码
# 编译后生成 MyWindowsService.exe
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319

# 安装服务
installutil "C:\Services\MyWindowsService.exe"

# 启动服务
net start MyWindowsService

# 停止服务
net stop MyWindowsService

# 卸载服务
installutil /u "C:\Services\MyWindowsService.exe"

完结撒花~

相关推荐
HECUgauss12 分钟前
微软拼音卡顿
windows
世转神风-1 小时前
windows-ps1脚本-获取网线直连下文件路径中的文件名
windows·脚本
专注VB编程开发20年2 小时前
C#内存加载dll和EXE是不是差不多,主要是EXE有入口点
数据库·windows·microsoft·c#
地狱为王2 小时前
Windows下编译coturn
windows
YCOSA20253 小时前
雨晨 Win7SP1 企业版 IE11 VCDX x64 极速 7601.28064
windows
吕了了4 小时前
给U盘一个PE to Go:将微PE系统直接释放到U盘
运维·windows·电脑·系统
Zhen (Evan) Wang4 小时前
.NET 6 API使用Serilog APM
c#·.net
总有刁民想爱朕ha5 小时前
MySQL 8 Windows日常维护教程(安装、备份、还原、重置密码等)
windows·mysql
世转神风-5 小时前
ps1脚本-运行报错-并带有乱码
windows·脚本
青w韵6 小时前
Claude 高级工具使用解析:从上下文优化到程序化调用的工程实践
数据库·windows