NET开发ServiceBase系统引擎服务,在服务的运行过程中捕获NETFRAMEWORK不能捕获的异常
在制作引擎服务的过程中,可能遇到Try Catch 之外的异常导致服务停止,所以同时需要处理这种异常,保证引擎的正常运行。
服务:
1. 在Main组件中继承System.ServiceProcess.ServiceBase类,并重写OnStart方法启动服务。
2. 在CMDInstall组件中继承System.Configuration.Install.Installer类,并重写OnAfterInstall方法,以使在CMD命令中可以使用install安装服务。
不能捕获的异常:
在TestEngineException类的析构函数中制作一个错误的运算,抛出异常。
启动函数:Program类中调用ServiceBase.Run() 启动服务。
完整代码:
Main.Designer.cs类的InitializeComponent() 中可以调用 this.ServiceName = "EngineTest" 设置服务名称;
将真实环境中要启动引擎服务的CMD批处理文件拷贝到bin目录,运行intall.bat将启动服务,uninstall.bat停止服务。
intall.bat:
%WinDir%/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe EngineTest.exe
cmd.exe
uninstall.bat
%WinDir%/Microsoft.NET/Framework/v2.0.50727/InstallUtil.exe /u EngineTest.exe
cmd.exe
注:调试模式需要设置Debug模式,发布的状态请设置Release模式。
调试模式不用运行CMD批处理。
本文介绍如何在.NET的ServiceBase类中实现异常处理,确保服务即使遇到未被捕获的异常也能稳定运行。通过注册未处理异常事件和日志记录机制,有效避免因意外错误导致的服务崩溃。
1176

被折叠的 条评论
为什么被折叠?



