windows 服务开发组件之Topshelf

常用的windows服务开发有vs自带的windows服务开发,但是操作起来不是很便利,相比Topshelf后者更加的方便,且易于调试,安装,卸载.

1、安装

通过nuget搜索最新版本的topshelf,并安装到控制台项目(netcore和net均可)中,一般都是用控制台调试,然后通过topshelf安装成windows服务.

官方文档地址 组件支持的功能基本满足日常开发需求,如常规的服务描述,服务异常处理,服务恢复,服务启动模式等等不一一赘述,自行查阅文档.

 

2、代码

复制代码
        public static void Run<TExecutedService>(Action<TopshelfOptions> configurator) where TExecutedService : TopshelfService
        {
            var options=new TopshelfOptions();
            configurator?.Invoke(options);
            if (string.IsNullOrEmpty(options.ServiceName))
                throw new ArgumentNullException(nameof(options.ServiceName));
            if (string.IsNullOrEmpty(options.DisplayName))
                throw new ArgumentNullException(nameof(options.DisplayName));

            HostFactory.Run(configurater =>
            {
                configurater.Service<TExecutedService>(service =>
                {
                    service.ConstructUsing(hostSetting =>
                    {
                        return ApplicationConfiguration.Current.Provider.GetRequiredService<TExecutedService>();
                    });
                    service.WhenStarted(s => s.Start());
                    service.WhenStopped(s => s.Stop());
                });
                configurater.RunAsLocalSystem();
                configurater.SetDescription(options.Description?? options.DisplayName);
                configurater.SetDisplayName(options.DisplayName);
                configurater.SetServiceName(options.ServiceName);
                configurater.OnException(exception =>
                {
                    Console.WriteLine("业务执行异常,异常信息如下:" + exception.Message + "堆栈信息如下:" + exception.StackTrace);
                });
            });
        }
复制代码

 

posted @   郑小超  阅读(177)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2017-04-04 Oracle PL/SQL编程之变量
2017-04-04 Oracle PL/SQL编程之包(packages)
2017-04-04 Oracle PL/SQL编程之函数
2017-04-04 Oracle PL/SQL编程之过程
点击右上角即可分享
微信分享提示