/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="disposing">Result: <c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> protected virtual void Dispose(bool disposing) { if (!isDisposed) { // Not already disposed ? if (disposing) { // dispose managed resources // Not already disposed ? if (pipeClient != null) { pipeClient.Dispose(); // Dispose it pipeClient = null; // Its now inaccessible } if (bw != null) { bw.Dispose(); // Dispose it bw = null; // Its now inaccessible } } // free unmanaged resources // Set large fields to null. // Instance is disposed isDisposed = true; } }
/// <summary> /// Releases unmanaged and - optionally - managed resources. /// </summary> /// <param name="isManaged">Result: <c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param> protected virtual void Dispose(bool isManaged) { // true if not invoked by the GC if (isManaged) { lock (_lock) { if (!isDisposed) { // dispose managed resources // Not already disposed ? if (pipeClient != null) { pipeClient.Dispose(); // Dispose it pipeClient = null; // Its now inaccessible } if (bw != null) { bw.Dispose(); // Dispose it bw = null; // Its now inaccessible } // Instance is disposed isDisposed = true; } } } // free unmanaged resources // Set large fields to null. // Instance is disposed isDisposed = true; }