diff options
Diffstat (limited to 'src/StardewModdingAPI')
-rw-r--r-- | src/StardewModdingAPI/Framework/ModHelper.cs | 11 | ||||
-rw-r--r-- | src/StardewModdingAPI/Program.cs | 6 |
2 files changed, 16 insertions, 1 deletions
diff --git a/src/StardewModdingAPI/Framework/ModHelper.cs b/src/StardewModdingAPI/Framework/ModHelper.cs index c8c44dba..52e482f2 100644 --- a/src/StardewModdingAPI/Framework/ModHelper.cs +++ b/src/StardewModdingAPI/Framework/ModHelper.cs @@ -6,7 +6,7 @@ using StardewModdingAPI.Framework.Serialisation; namespace StardewModdingAPI.Framework { /// <summary>Provides simplified APIs for writing mods.</summary> - internal class ModHelper : IModHelper + internal class ModHelper : IModHelper, IDisposable { /********* ** Properties @@ -107,5 +107,14 @@ namespace StardewModdingAPI.Framework path = Path.Combine(this.DirectoryPath, path); this.JsonHelper.WriteJsonFile(path, model); } + + /**** + ** Disposal + ****/ + /// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary> + public void Dispose() + { + // nothing to dispose yet + } } } diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs index ed8fb592..7fa78dce 100644 --- a/src/StardewModdingAPI/Program.cs +++ b/src/StardewModdingAPI/Program.cs @@ -204,10 +204,16 @@ namespace StardewModdingAPI /// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary> public void Dispose() { + // skip if already disposed if (this.IsDisposed) return; this.IsDisposed = true; + // dispose mod helpers + foreach (var mod in this.ModRegistry.GetMods()) + (mod.Helper as IDisposable)?.Dispose(); + + // dispose core components this.IsGameRunning = false; this.LogFile?.Dispose(); this.ConsoleManager?.Dispose(); |