首页 > 系统相关 >windows 服务开发组件之Topshelf

windows 服务开发组件之Topshelf

时间:2023-04-04 13:22:53浏览次数:58  
标签:服务 service windows options Topshelf 组件 DisplayName configurater

常用的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);
                });
            });
        }

 

标签:服务,service,windows,options,Topshelf,组件,DisplayName,configurater
From: https://www.cnblogs.com/GreenLeaves/p/17286080.html

相关文章

  • Windows批处理文件初始化数据库
    前提是MySQL服务必须启动,Windows添加了MySQL的环境变量。批处理文件:@ECHOOFFSETdbhost=127.0.0.1SETdbuser=rootSETdbpasswd=rootSETdbName=xc_ntpclientmonitorSETsqlfile=C:\\ProgramFiles\\NTSM\\20210401_xc_ntpclientmonitor.sql::执行SQL脚本初始化数据......
  • WindowsServers2019上手体验
    一、安装1、Servers2019http://www.kaixinit.com/info/maintenance/405.html2、Office2019先安装试用版,然后复制下面代码,新建到.bat并运行。@echoofftitleActivateMicrosoftOffice2019ALLversionsforFREE!&cls&echo===================================================......
  • windows本地部署redis
    1:了解自己php扩展版本,在php文件里输入phpinfo();执行看php版本,看phpExtensionBiuld的值。 2:下载redis配置文件:址:https://windows.php.net/downloads/pecl/releases/redis/点5.3.4版本里的根据phpExtensionBiuld选一个下载。 3:把下载的文件里的php_redis.dll和php_......
  • Windows - sfc scan
    C:\Windows\System32>sfc/scannowBeginningsystemscan.Thisprocesswilltakesometime.Beginningverificationphaseofsystemscan.Verification100%complete.WindowsResourceProtectionfoundcorruptfilesandsuccessfullyrepairedthem.Foronlin......
  • windows 乱码之 gbk 与 cp936|4-3
    事发原因这是由于控制台输入的编码与node程序中使用的编码不一致导致的.相关疑问可能你要问:那是不是都改为utf8就行了?并不行.这就是windows控制台没有默认是utf8的原因,并且utf8与gbk也不是兼容的.如果理解不兼容?假设你修改windows控制台为cp65001(utf8)之......
  • Windows用内网跑https
    1、windows系统:直接下载解压即可。下载链接:https://pan.baidu.com/s/11js65YwFdKaBifxOi-xA5g?pwd=8855  提取码:88552.安装CA根证书到本地,下载程序进行解压,放到windows相应目录并解压,以管理员身份运行下面指令(mkcert表示mkcert-v1.4.1-windows-amd64.exe的完整路径加+mkc......
  • windows 主机代理服务器搭建
    https://www.php1.cn/detail/QiaoMiaoDiBa_win_18b100da.html0x01背景 在现实情景中,我们仅有一台windows主机可以上网(在公司的生产环境、测试环境、各种其他场景下,由于各种安全策略或者上网限制,其他服务器均无法上网。但是我们在测试、生产中,可能需要其他服务器联网获取更新......
  • React Native学习笔记(三)—— 组件
    一、ReactNative项目1.1、创建ReactNative项目ReactNative有一个内置的命令行界面,你可以用它来生成一个新项目。您可以使用Node.js附带的访问它,而无需全局安装任何内容。让我们创建一个名为“AwesomeProject”的新ReactNative项目:npxnpxreact-native@latestinitAw......
  • 在Windows下编译Saba
    今天写一篇环境配置的博客,感觉这种博客比较好写......
  • 在 Windows 7 中禁用IPv6协议/IPv6隧道
    HowtodisablecertainInternetProtocolversion6(IPv6)componentsinWindowsVista,Windows7andWindowsServer2008HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\双击DisabledComponents来修改DisabledComponents项。如果Disa......