Base. Dispose(Boolean) Method
Disposes of the resources (other than memory) used by the ServiceBase.
protected: override void Dispose(bool disposing);
protected override void Dispose (bool disposing);
override this.Dispose : bool -> unit
Protected Overrides Sub Dispose (disposing As Boolean)
true to release both managed and unmanaged resources;
false to release only unmanaged resources.
Call Dispose in your derived class (and through it, in the ServiceBase class) when you are finished using the derived class. The Dispose method leaves the derived class in an unusable state. After calling Dispose, you must release all references to the derived class and ServiceBase so the memory they were occupying can be reclaimed by garbage collection.
Always call Dispose before you release your last reference to the class derived from ServiceBase. Otherwise, the resources ServiceBase and the derived class are using will not be freed until garbage collection calls the objects' destructors.
OnStop is often implemented to process the code in OnPause, combined with a call to Dispose. If you choose to do this in your derived class, it is customary to implement OnStart to allocate whatever Dispose released.