文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#如何实现Windows服务测试与调试

2023-06-29 07:11

关注

这篇文章主要为大家展示了“C#如何实现Windows服务测试与调试”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何实现Windows服务测试与调试”这篇文章吧。

一、测试Windows服务

为了使Windows服务程序能够正常运行,我们需要像创建一般应用程序那样为它创建一个程序的入口点。像其他应用程序一样,Windows服务也是在Program.cs的Main()函数中完成这个操作。首先我们在Main()函数中创建一个Windows服务的实例,该实例应该是ServiceBase类的某个子类的对象,然后我们调用由基类ServiceBase类定义的一个Run()方法。然而调用Run()方法并不意味着就开始了Windows服务程序,必须要等到该对象的OnStart()方法被调用时服务才算真正开始运行。如果你想在一个Windows服务程序中同时启动多个服务,那么只要在Main()函数中定义多个ServiceBase类的子类的实例对象就可以了,方法就是创建一个ServiceBase类的数组对象。

 namespace WindowsServiceDemo {     static class Program     {         /// <summary>         /// 应用程序的主入口点。         /// </summary>         static void Main()         {             ServiceBase[] ServicesToRun;             ServicesToRun = new ServiceBase[]              {                  //服务1                 new MyService(),                  //服务2                 new Service1()             };             ServiceBase.Run(ServicesToRun);         }     } }

由于Windows服务没有直接的用户交互,服务的状态必须通过记录日志才可知晓。要测试windows服务,可以通过重写服务里面的方法,在方法里面记录日志来实现。

新建Common类,类里面有一个WriteLog记录日志的方法。日志路径写在配置文件里面,可以实现项目的灵活性。

 namespace WindowsServiceDemo {     public class Common     {         /// <summary>         /// 记录日志         /// </summary>         /// <param name="strInfo"></param>         public static void WriteLog(string strInfo)         {             string strPath=ConfigurationManager.AppSettings["FilePath"];             using (StreamWriter sw = new StreamWriter(strPath, true))             {                 sw.WriteLine(strInfo + ",当前时间:" + DateTime.Now.ToString());                 sw.Close();             }                      }     } }

在Service1的设计界面点右键-->查看代码,打开Service1的代码,分别重写OnStart()、OnStop()、OnPause()、OnContinue()方法,在方法里面调用Common类的WriteLog方法来记录服务的运行状态。

 namespace WindowsServiceDemo {     public partial class MyService : ServiceBase     {         public MyService()         {             InitializeComponent();         }          /// <summary>         /// 服务启动时执行的代码         /// </summary>         /// <param name="args"></param>         protected override void OnStart(string[] args)         {             try             {                 Common.WriteLog("服务启动");             }             catch (Exception ex)             {                 Common.WriteLog("服务启动出错:"+ex.Message);             }         }          /// <summary>         /// 服务停止时执行的代码         /// </summary>         protected override void OnStop()         {             try             {                 Common.WriteLog("服务停止");             }             catch (Exception ex)             {                                  Common.WriteLog("服务停止出错:"+ex.Message);             }         }          /// <summary>         /// 服务暂停时执行的代码         /// </summary>         protected override void OnPause()         {             try             {                 Common.WriteLog("服务暂停");             }             catch (Exception ex)             {                                   Common.WriteLog("服务暂停出错:"+ex.Message);             }         }          /// <summary>         /// 服务恢复时执行的代码         /// </summary>         protected override void OnContinue()         {             try             {                 Common.WriteLog("服务恢复");             }             catch (Exception ex)             {                                   Common.WriteLog("服务恢复出错:"+ex.Message);             }         }      } }

在服务控制管理器里面分别启动、暂停、恢复、停止服务,查看生成的日志:

C#如何实现Windows服务测试与调试

日志里面正确记录了服务的运行状态,证明服务没有问题。

二、调试Windows服务

 调试Windows服务,可以采用将服务附加到进程的方法。

在菜单栏选项里面选择调试-->附加到进程

C#如何实现Windows服务测试与调试

在附加到进程界面,选择相应的服务进程,点击附加。

注意:要把服务附加到进程,必须保证服务是启动状态,否则在进程里面看不到服务的进程。

以上是“C#如何实现Windows服务测试与调试”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯