Parent Directory
|
Revision Log
|
Patch
--- trunk/Win32/Sojaner.MemoryScanner/MemoryProviers/BaseMemoryProvider.cs 2012/06/20 11:18:56 397 +++ trunk/Win32/Sojaner.MemoryScanner/MemoryProviers/BaseMemoryProvider.cs 2012/06/20 12:16:34 398 @@ -17,7 +17,8 @@ IAcceptsPlugin<IConfigPlugin>, IMemoryReader, IMemoryWriter, - IFileWriter + IFileWriter, + IDisposable { private ProcessMemoryReader provider; public BaseMemoryProvider() { this.AcceptedPlugin = null; this.AcceptedProcess = null; isClosed = true; isOpen = false; } @@ -333,6 +334,66 @@ } #endregion #endregion + + #region IDisposable Support + // Track whether Dispose has been called. + private bool disposed = false; + // Implement IDisposable. + // Do not make this method virtual. + // A derived class should not be able to override this method. + public void Dispose() + { + Dispose(true); + // This object will be cleaned up by the Dispose method. + // Therefore, you should call GC.SupressFinalize to + // take this object off the finalization queue + // and prevent finalization code for this object + // from executing a second time. + GC.SuppressFinalize(this); + } + // Dispose(bool disposing) executes in two distinct scenarios. + // If disposing equals true, the method has been called directly + // or indirectly by a user's code. Managed and unmanaged resources + // can be disposed. + // If disposing equals false, the method has been called by the + // runtime from inside the finalizer and you should not reference + // other objects. Only unmanaged resources can be disposed. + protected virtual void Dispose(bool disposing) + { + // Check to see if Dispose has already been called. + if (!this.disposed) + { + // If disposing equals true, dispose all managed + // and unmanaged resources. + if (disposing) + { + // Dispose managed resources. + //component.Dispose(); + } + + // Call the appropriate methods to clean up + // unmanaged resources here. + // If disposing is false, + // only the following code is executed. + CloseProvider(); + // Note disposing has been done. + disposed = true; + + } + } + // Use C# destructor syntax for finalization code. + // This destructor will run only if the Dispose method + // does not get called. + // It gives your base class the opportunity to finalize. + // Do not provide destructors in types derived from this class. + ~BaseMemoryProvider() + { + // Do not re-create Dispose clean-up code here. + // Calling Dispose(false) is optimal in terms of + // readability and maintainability. + Dispose(false); + } + #endregion } #endregion } \ No newline at end of file
ViewVC Help | |
Powered by ViewVC 1.1.22 |