From 6c77e2b236169c93b4ea29939c535f83419388ba Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Wed, 7 Oct 2015 15:26:23 +0300 Subject: [PATCH] Added code to debug disposables --- src/Perspex.Base/PerspexDisposable.cs | 16 +++++++++++++++- .../Platform/IPclPlatformWrapper.cs | 1 + .../PlatformSupport/PclPlatformWrapper.cs | Bin 1818 -> 1954 bytes 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/Perspex.Base/PerspexDisposable.cs b/src/Perspex.Base/PerspexDisposable.cs index 28a06bc12d..d3017e4b44 100644 --- a/src/Perspex.Base/PerspexDisposable.cs +++ b/src/Perspex.Base/PerspexDisposable.cs @@ -3,23 +3,37 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Perspex.Platform; namespace Perspex { public abstract class PerspexDisposable : IDisposable { +#if DEBUG_DISPOSE + public string DisposedAt { get; private set; } +#endif + + public bool IsDisposed { get; private set; } public void Dispose() { IsDisposed = true; +#if DEBUG_DISPOSE + DisposedAt = PerspexLocator.Current.GetService().GetStackTrace(); +#endif DoDispose(); } protected void CheckDisposed() { if (IsDisposed) - throw new ObjectDisposedException(GetType().FullName); + throw new ObjectDisposedException(GetType().FullName +#if DEBUG_DISPOSE + , "Disposed at: \n" + DisposedAt +#endif + + ); } protected abstract void DoDispose(); diff --git a/src/Perspex.Base/Platform/IPclPlatformWrapper.cs b/src/Perspex.Base/Platform/IPclPlatformWrapper.cs index 20c836bdaf..68a2a379bf 100644 --- a/src/Perspex.Base/Platform/IPclPlatformWrapper.cs +++ b/src/Perspex.Base/Platform/IPclPlatformWrapper.cs @@ -12,5 +12,6 @@ namespace Perspex.Platform Assembly[] GetLoadedAssemblies(); void PostThreadPoolItem(Action cb); IDisposable StartSystemTimer(TimeSpan interval, Action tick); + string GetStackTrace(); } } diff --git a/src/Shared/PlatformSupport/PclPlatformWrapper.cs b/src/Shared/PlatformSupport/PclPlatformWrapper.cs index 7ef28393543a639d07803a4b261c0685dd8e0dfd..0c7e80fddbc2facc71397d47b61dd9c6131e508b 100644 GIT binary patch delta 134 zcmbQmw}^iO7yIN7Y$B5@nEA?z8A=$67&0017}6OO7~C0Bf&5?~PGm@C$Yuxu%7Iv^ w3>plYKzUmRJ0R%_R9yztQ^b%DWaR>7^ME?^uVd#oFt3&Y0EK55od5s; delta 24 bcmZ3)KZ|bz7rTH00|eGG@G@{Q)G`17I_Cqt