这篇文章主要为大家展示了“C#如何实现Windows服务测试与调试”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C#如何实现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服务,可以通过重写服务里面的方法,在方法里面记录日志来实现。
1、新建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(); } } } }
2、在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); } } } }
3、在服务控制管理器里面分别启动、暂停、恢复、停止服务,查看生成的日志:
日志里面正确记录了服务的运行状态,证明服务没有问题。
调试Windows服务,可以采用将服务附加到进程的方法。
1、在菜单栏选项里面选择调试-->附加到进程
2、在附加到进程界面,选择相应的服务进程,点击附加。
注意:要把服务附加到进程,必须保证服务是启动状态,否则在进程里面看不到服务的进程。
以上是“C#如何实现Windows服务测试与调试”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。