千家信息网

Dotnet Core Windows Service的示例分析

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关Dotnet Core Windows Service的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在dotne
千家信息网最后更新 2026年11月02日Dotnet Core Windows Service的示例分析

这篇文章将为大家详细讲解有关Dotnet Core Windows Service的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在dotnet 中有topshelf 可以很方便的写windows 服务并且安装也是很方便的,命令行 运行.exe install 就直接把exe 程序安装成windows 服务。当然代码也要做相应的修改,具体的可以参照例子。

在dotnet core 2.0 中 我们也有一个很方便的dll 来使用

https://github.com/PeterKottas/DotNetCore.WindowsService

通过Nuget来安装 : Install-Package PeterKottas.DotNetCore.WindowsService

方便多个服务我们先定义一个接口

public interface IBaseService
{
void Start();
void Stop();
}

具体的实现呢 我举个例子,在例子中我们试用了个Timer,定时的完成某些任务,这样 我们就可以同时写好几个service 只要继续 IBaseService 就行,也比较方面安装

public class SyncService : IBaseService
{
private readonly System.Timers.Timer _timer;
private readonly ILogger logger;
public SyncService( ILoggerFactory loggerFactory)
{

_timer = new System.Timers.Timer(10000);
_timer.Elapsed += new ElapsedEventHandler(OnTimedEvent);

_timer.Interval = 2000;

_timer.AutoReset = true;
_timer.Enabled = false;
logger = loggerFactory.CreateLogger();
}


private void OnTimedEvent(object source, ElapsedEventArgs e)
{
Console.WriteLine(string.Format("SyncService:{0:yyyy-MM-dd HH:mm:sss}", DateTime.Now));
_timer.Enabled = false;

try
{
//do some job;
}
catch (Exception ex)
{
logger.LogError("SyncService Error {0}:", ex.Message);
}
Console.WriteLine(string.Format("SyncService:{0:yyyy-MM-dd HH:mm:sss}", DateTime.Now));

Thread.Sleep(5 * 60 * 1000);

_timer.Enabled = true;

}
private async Task SyncData()
{
string url = configModel.DatabaseIncrementUrl;
var httpClient = new HttpClient();
return await httpClient.GetAsync(url);
}


public void Start()
{
_timer.Start();
_timer.Enabled = true;
}
public void Stop()
{
_timer.Stop();
_timer.Enabled = false;
}
}

class Program
{
static void Main(string[] args)
{

IConfigurationRoot Configuration;
// ILoggerFactory LoggerFactory;

var builder = new ConfigurationBuilder()
.SetBasePath(Path.Combine(AppContext.BaseDirectory))
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();

Configuration = builder.Build();

var services = new ServiceCollection();

services.AddOptions();
services.Configure(Configuration.GetSection("ConfigSetting"));
services.AddSingleton(Configuration);

services.AddTransient();

services.AddTransient();
services.AddTransient();
services.AddTransient();

var serviceProvider = services.BuildServiceProvider();

ServiceRunner.Run(config =>
{
var name = config.GetDefaultName();
config.Service(serviceConfig =>
{
serviceConfig.ServiceFactory((extraArguments, controller) =>
{
return new ServiceFactory(serviceProvider.GetService>(), controller);
});
serviceConfig.OnStart((service, extraArguments) =>
{
Console.WriteLine("Service {0} started", name);
service.Start();
});

serviceConfig.OnStop(service =>
{
Console.WriteLine("Service {0} stopped", name);
service.Stop();
});

serviceConfig.OnError(e =>
{
Console.WriteLine("Service {0} errored with exception : {1}", name, e.Message);
});
});

config.SetName("SAASService");
config.SetDescription("SAAS Service For All Saas Client");
config.SetDisplayName("SAAS Service");
});
}
}

关于Dotnet Core Windows Service的示例分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

例子 服务 示例 分析 内容 文章 更多 知识 篇文章 不错 代码 任务 同时 命令 多个 接口 方面 来使 程序 质量 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是第几次科技革命的成果 互联网佳科技有限公司 互联网科技工作委员会副主任毛军 A股互联网金融科技公司 汇久创客互联网科技 盛创互联网科技有限公司 衡水科技产业互联网平台 上海宁丞科技互联网 搜狐科技互联网 洛阳昕诺飞互联网科技有限公司 企晟互联网信息科技有限公司 互联网科技如何创业 伊宁互联网科技做什么的 合肥互联网科技公司公章图片 互联网科技实习生岗位 互联网风格科技公司名称 易企秀互联网科技是做什么的 珠海东科互联网科技有限公司 广西泛欧互联网科技有限公司 银川新华互联网科技学校招聘 互联网黑科技 天津市摩尔互联网科技 互联网金融公司科技 互联网 卓越科技 广州互联网络科技有限公司 奇士达互联网科技 唐信互联网科技 大连 互联网高科技企业 中国科技互联网公司收入 华人运通互联网科技公司
0