summaryrefslogtreecommitdiff
path: root/src/StardewModdingAPI/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/StardewModdingAPI/Program.cs')
-rw-r--r--src/StardewModdingAPI/Program.cs17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/StardewModdingAPI/Program.cs b/src/StardewModdingAPI/Program.cs
index 725ac94f..a5905805 100644
--- a/src/StardewModdingAPI/Program.cs
+++ b/src/StardewModdingAPI/Program.cs
@@ -228,14 +228,25 @@ namespace StardewModdingAPI
/// <summary>Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.</summary>
public void Dispose()
{
+ this.Monitor.Log("Disposing...", LogLevel.Trace);
+
// 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 mod data
+ foreach (IMod mod in this.ModRegistry.GetMods())
+ {
+ try
+ {
+ (mod as IDisposable)?.Dispose();
+ }
+ catch (Exception ex)
+ {
+ this.Monitor.Log($"The {mod.ModManifest.Name} mod failed during disposal: {ex.GetLogSummary()}.", LogLevel.Warn);
+ }
+ }
// dispose core components
this.IsGameRunning = false;