Cha*_* Y. 5 .net windows service lifecycle lifetime
在哪里可以找到.NET中开发的Windows服务生命周期的详细视图?我以这种方式提出问题,因为我不确定在这里可以发布详细的描述,但如果您认为可以请随意尝试.
不正确答案的一个示例是从MSDN页面粘贴说明:Windows服务应用程序简介.它不够详细.例如,服务是否已从内存中卸载,因此调用了Dispose方法?或者只是通过OnStop方法停止,只是通过调用OnStart方法重新启动而不进行初始化?
由于我的问题已被回答,同时提出另一个问题,这里有一些对象生命周期的引用(我现在知道它也适用于服务)供未来访问者使用这个问题:
StackOverflow - 什么是.NET对象生命周期?
tutorials.beginners.co.uk/read/id/188
developerfusion.com/article/1047/new-objectoriented-capabilities-in-vbnet/3/
请享用!
Windows服务实际上是暴露了服务管理来控制它一些额外的方法的应用,即Stop(),Start(),Pause(),Continue()(或等价物).
调用Start时,将创建应用程序域,初始化服务类并Start()调用方法.在停止时,Stop()在从内存中卸载应用程序域之前调用该方法.
你可以通过任务管理器看到这个.在调用启动之前,应用程序不存在于内存中,并且在Stop完成后它将消失.
因此,我相信您的生命周期问题的答案在于标准.NET应用程序的生命周期,无论是命令行,winforms还是asp.net.
我还建议,如果你依赖于Dispose方法,那么你的设计中可能存在一个缺陷,在大多数情况下,Dispose清理的资源应该比服务主机调用你的组件时更频繁地处理处置.大多数服务都是在某个地方响应系统事件的机制,在此事件来自非托管资源的情况下,您可能只想获取资源OnStart并将其释放到OnStop,在事件不是源自非托管的情况下那么你可能想要以更JustInTime类型的方式获取和释放非托管资源,只有当你需要它们时才将它们作为资源抓取并尽快释放它们(通过它们的Dispose方法).如需进一步阅读,请查看何时以及如何使用dispose和.Net配置模式
| 归档时间: |
|
| 查看次数: |
2911 次 |
| 最近记录: |