Windows服务停止时为什么会调用base.OnStop()?我正在创建一个C#.NetWindows服务,我想知道您是否总是需要调用base.OnStop();在服务的OnStop()方法中为什么?protectedoverridevoidOnStop(){threadRunning=false;这个.ExitCode=0;base.OnStop();来自ServiceBase.OnStop的文档:期望OnStop在派生类中被覆盖。要使服务有用,OnStart和OnStop都应在您的服务类中实现。所以它实际上被用作它正在停止的服务的通知。只需看一眼ServiceBase.cs的.NET源代码就会发现该方法无效:protectedvirtualvoidOnStop(){}那么,您需要调用吗?不,但这样做仍然是一种很好的形式。底层实现可能有一天会改变。你不应该。它只是意味着如果你在ServiceBase和实际服务之间插入一个额外的基类,如果它被覆盖,你将调用它的OnStop方法。我不相信ServiceBase.OnStop本身会做任何事情。通常,在覆盖IMO时调用基本方法是个好主意,除非您特别想防止“正常”行为发生……但在这种情况下,省略调用不会产生任何不良影响。你不需要。OnStop是ServiceBase中定义的一个虚拟方法,它允许您覆盖服务停止处理。在(某种程度上)一般情况下,当您重写虚方法时,也会调用基虚方法。你唯一不打电话的时候是你想防止正常事情发生的时候。对于Servicebase,OnStop什么都不做,所以你不需要调用它。你实际上不必打电话。如果您使用Reflector查看ServiceBase类中的OnStop方法,您会发现它根本没有执行任何操作。以上是C#学习教程:Windows服务停止时为什么会调用base.OnStop()?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
