From 71c592ceaf1718d2bdbc4b43de87b89371021cce Mon Sep 17 00:00:00 2001 From: Eli Belash Date: Fri, 23 Aug 2019 00:31:29 +0300 Subject: [PATCH] DisposableObject: Added CheckDisposed() --- src/TensorFlowNET.Core/DisposableObject.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/TensorFlowNET.Core/DisposableObject.cs b/src/TensorFlowNET.Core/DisposableObject.cs index 12bb8c3a..ddd32173 100644 --- a/src/TensorFlowNET.Core/DisposableObject.cs +++ b/src/TensorFlowNET.Core/DisposableObject.cs @@ -17,6 +17,7 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; using System.Text; namespace Tensorflow @@ -36,6 +37,7 @@ namespace Tensorflow protected DisposableObject(IntPtr handle) => _handle = handle; + [SuppressMessage("ReSharper", "InvertIf")] private void internal_dispose(bool disposing) { if (_disposed) @@ -48,6 +50,7 @@ namespace Tensorflow // dispose managed state (managed objects). DisposeManagedResources(); + //free unmanaged memory if (_handle != IntPtr.Zero) { DisposeUnmanagedResources(_handle); @@ -79,5 +82,16 @@ namespace Tensorflow GC.SuppressFinalize(this); } + + /// + /// If is then throws + /// + /// When is + [MethodImpl(MethodImplOptions.AggressiveInlining)] + protected void EnsureNotDisposed() + { + if (_disposed) + throw new ObjectDisposedException($"Unable to access disposed object, Type: {GetType().Name}"); + } } } \ No newline at end of file