/// <summary> /// Dispose /// </summary> /// <param name="disposeErrors"></param> protected override void innerDispose(ref List <Exception> disposeErrors) { // Dispose and null module, only once try { Interlocked.CompareExchange(ref module, null, module)?.Dispose(); } catch (Exception e) { (disposeErrors ?? (disposeErrors = new List <Exception>())).Add(e); } // Belated disposes try { belatedDisposeList.Dispose(); } catch (Exception e) { (disposeErrors ?? (disposeErrors = new List <Exception>())).Add(e); } }
/// <summary> /// Forwards dispose to <see cref="streamProvider"/>. Marks this class disposed. /// </summary> /// <param name="disposeErrors"></param> protected override void innerDispose(ref List <Exception> disposeErrors) { try { Interlocked.CompareExchange(ref streamProvider, null, streamProvider)?.Dispose(ref disposeErrors); } catch (Exception e) { (disposeErrors ?? (disposeErrors = new List <Exception>())).Add(e); } // Belated disposes try { belatedDisposeList.Dispose(); } catch (Exception e) { (disposeErrors ?? (disposeErrors = new List <Exception>())).Add(e); } }