/// <summary> /// Disposer. Release resources and cleanup. /// </summary> /// <param name="disposing">true to dispose managed resources</param> protected virtual void Dispose(bool disposing) { // Check to see if Dispose has already been called. if (!_disposed) { Log.Debug(); if (disposing) { _done = true; var item = new DoneEventHandlerItem(); _queue.Enqueue(item); Log.Debug("Aborting thread..."); _thread.Abort(); Log.Debug("Returned from abort"); // Wait until oThread finishes. Join also has overloads // that take a millisecond interval or a TimeSpan object. Log.Debug("Calling Join"); _thread.Join(); Log.Debug("REturned from join"); // dispose all managed resources. Automation.RemoveAllEventHandlers(); } // Release unmanaged resources. } _disposed = true; }
/// <summary> /// Disposer. Release resources and cleanup. /// </summary> /// <param name="disposing">true to dispose managed resources</param> protected virtual void Dispose(bool disposing) { // Check to see if Dispose has already been called. if (!_disposed) { Log.Debug(); if (disposing) { _done = true; var item = new DoneEventHandlerItem(); _queue.Enqueue(item); Log.Debug("Aborting thread..."); _thread.Abort(); Log.Debug("Returned from abort"); // Wait until oThread finishes. Join also has overloads // that take a millisecond interval or a TimeSpan object. Log.Debug("Calling Join"); _thread.Join(); Log.Debug("REturned from join"); // dispose all managed resources. Automation.RemoveAllEventHandlers(); } // Release unmanaged resources. } _disposed = true; }