【.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"

完结撒花~

相关推荐
IT小哥哥呀8 小时前
如何从 Windows SSH 进入 VirtualBox Ubuntu 虚拟机——密码认证(逐步指南)
linux·windows·ubuntu·ssh·教程·虚拟机
XI锐真的烦8 小时前
Flutter Windows 下“Running Gradle task ‘assembleDebug‘...” 卡住一整天的终极解决办法
windows·flutter
神秘人-解说11 小时前
在Mac上安装Windows 11/10双系统(M1/M2/Intel通用)
windows·macos·mac安装双系统·mac安装虚拟机·mac安装windows
人工智能训练11 小时前
Windows中如何将Docker安装在E盘并将Docker的镜像和容器存储在E盘的安装目录下
linux·运维·前端·人工智能·windows·docker·容器
k***921613 小时前
如何在Windows系统上安装和配置Node.js及Node版本管理器(nvm)
windows·node.js
q***925113 小时前
PHP搭建开发环境(Windows系统)
开发语言·windows·php
IccBoY14 小时前
将idea快捷打开加入到鼠标右键
windows·intellij-idea·idea
WXDcsdn14 小时前
联想台式机更换硬盘(Win10转Win7)后鼠标和键盘无法使用
运维·windows·it运维
zt1985q15 小时前
本地部署 Jupyter 并实现外部访问(Windows 版本)
运维·服务器·windows
J总裁的小芒果17 小时前
el-table 扁平化数据后合并单元格
windows