使用C#写一个Windows服务

时间:2022-12-15 17:16:10
  1. 创建服务程序
    使用C#写一个Windows服务

可能你的VS里面没有【Windows服务】这个模板,那么你就需要通过“打开Visual Studio安装程序“,通过VisualStudio Installer来通过“修改”来安装【.NET桌面开发】
使用C#写一个Windows服务
使用C#写一个Windows服务
使用C#写一个Windows服务
使用C#写一个Windows服务
使用C#写一个Windows服务
通过上面两个地方均可以进入对应的代码文件

public partial class Service1 : ServiceBase
    {
        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            Console.WriteLine("服务启动");
            new Thread(Run).Start();
        }

        protected override void OnStop()
        {
            Console.WriteLine("服务结束");
        }

        private void Run()
        {
            while (true)
            {
                Thread.Sleep(5000);
            }
        }
    }

注意:
很多人在写服务程序时,喜欢把自己线程的代码写在Proram.cs文件中,这个是不正确的,一般都写在服务类中的OnStart方法。因为OnStart方法才是你启动了服务才要开始干的事情。Proram.cs是安装服务完成时就开始干事情了。

通过以上,我们在Visual Studio的解决方案资源管理器中的项目上 右键- 生成 即可生成需要的Windows服务程序exe。
该exe不可直接运行,否则提示
使用C#写一个Windows服务

  1. 安装Windows服务程序
    安装方式一:
    以管理员身份
    (否则,日志提示“在安装的“回滚”阶段发生异常。将忽略该异常并继续回滚。但是,在完成回滚后计算机可能无法完全还原到它的初始状态。“回滚”阶段已成功完成。已完成事务处理安装。安装失败,已执行回滚”等字样)
    打开CMD,进入目录【%systemroot%\microsoft.net\framework\v4.0.30319】使用工具InstallUtil.exe 工具
    安装服务命令 InstallUtil F:\ProjectWorkspace\WindowsService.exe
    卸载服务命令 InstallUtil /u F:\ProjectWorkspace\WindowsService.exe
    使用C#写一个Windows服务
    安装方式二
    创建安装脚本
    在项目中添加2个文件如下(必须是ansi或者utf-8无bom格式):
    1)安装服务脚本install.bat
%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe windowsservicetest.exe
net start servicetest
sc config servicetest start=auto

第1行安装服务
第2行为启动服务。
第3行为设置服务为自动运行。
如果需要查看脚本运行状况,在脚本最后一行加入pause

2)卸载脚本uninstall.bat

%systemroot%\microsoft.net\framework\v4.0.30319\installutil.exe/u windowsservicetest.exe

服务安装完毕后,如图:
使用C#写一个Windows服务
3. 启动服务失败
出现如下提示框 “。。。某些服务在未由其他服务或程序使用时将自动停止。”
使用C#写一个Windows服务
此时我们可以在计算机日志中查找原因
使用C#写一个Windows服务

  1. 调试服务程序
    使用C#写一个Windows服务

参考:

  1. http://t.zoukankan.com/alunchen-p-5982626.html
  2. https://dianzubuluo.com/%E6%9C%AA%E5%91%BD%E5%90%8D/131456.html
  3. https://www.yisu.com/zixun/129503.html.
  4. https://www.51sjk.com/b22b311003/