sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

https://jingyan.baidu.com/article/456c463b18e1b00a583144b3.html

本篇经验将和大家介绍在C# 中如何进行Windows服务程序调试,希望对大家的工作和学习有所帮助!

工具/原料

  • 已编写好一个Windows服务程序

附加到进程(不推荐)

  1. 1

    首先要对服务进行安装,然后启动服务,如下图所示:

     

     

    C# Windows服务程序如何进行调试
  2. 2

    打开VS项目,选择菜单 调试->附加到进程 选项,如下图所示:

    C# Windows服务程序如何进行调试
  3. 3

    选择服务进程(如果找不到可以勾选 显示所有用户进程 选项)就可以了,找到服务对应的exe程序,如下图所示:

    C# Windows服务程序如何进行调试
  4. 4

    在附加到进程的同时 OnStart 函数已经执行完毕,所以对 Onstart 无法调试。这个可以通过设置启动服务延时来加载调试,只需要在计时器Timer初始化的时候,传递一个参数即可,如下图所示:

    C# Windows服务程序如何进行调试
  5. 5

    注意:正常服务的启动时间为30秒左右,当服务启动时间超过30秒会报错!

     

    所以不要在OnStart中做过多的操作,也可以用这种延时的方法启动服务,以防在启动服务时超时。

    END

修改源代码(推荐)

  1. 1

    找到服务主类中的OnStart方法,由

    protected override void OnStart(string[] args)

    {

      //todo something

    }

    修改成

    public void OnStart()

    {

       //todo something

    }

    如下图所示:

    C# Windows服务程序如何进行调试
  2. 2

    注释掉Program.cs文件中的如下代码:

    ServiceBase[] ServicesToRun;

    ServicesToRun = new ServiceBase[] 

    new Service1() 

    };

    ServiceBase.Run(ServicesToRun);

    修改成

    Service1 s1 = new Service1();

    s1.OnStart();

    如下图所示:

    C# Windows服务程序如何进行调试
  3. 3

    OnStart方法中利用F9打断点,然后按下F5就可以进行调试跟踪代码了,如下图所示:

    C# Windows服务程序如何进行调试
  4. 4

    注意:调试时,需要将先前启动的服务首先停止。程序代码编写调试完成后,记得将第1和2步骤的修改还原即可。

    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
posted on   sunny123456  阅读(1269)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示