diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index c355fba1..39bf2659 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -384,7 +384,17 @@ public abstract partial class AssistantBase : AssistantLowerBase wher protected override void DisposeResources() { - this.formChangeTimer.Dispose(); + try + { + this.formChangeTimer.Stop(); + this.formChangeTimer.Dispose(); + } + catch + { + // ignore + } + + base.DisposeResources(); } #endregion diff --git a/app/MindWork AI Studio/Components/ConfigurationText.razor.cs b/app/MindWork AI Studio/Components/ConfigurationText.razor.cs index 7bcce41e..5074fa73 100644 --- a/app/MindWork AI Studio/Components/ConfigurationText.razor.cs +++ b/app/MindWork AI Studio/Components/ConfigurationText.razor.cs @@ -92,4 +92,23 @@ public partial class ConfigurationText : ConfigurationBaseCore await this.SettingsManager.StoreSettings(); await this.InformAboutChange(); } + + #region Overrides of MSGComponentBase + + protected override void DisposeResources() + { + try + { + this.timer.Stop(); + this.timer.Dispose(); + } + catch + { + // ignore + } + + base.DisposeResources(); + } + + #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/DebouncedTextField.razor.cs b/app/MindWork AI Studio/Components/DebouncedTextField.razor.cs index fbf54c74..41b26d93 100644 --- a/app/MindWork AI Studio/Components/DebouncedTextField.razor.cs +++ b/app/MindWork AI Studio/Components/DebouncedTextField.razor.cs @@ -4,7 +4,7 @@ using Timer = System.Timers.Timer; namespace AIStudio.Components; -public partial class DebouncedTextField : MudComponentBase +public partial class DebouncedTextField : MudComponentBase, IDisposable { [Parameter] public string Label { get; set; } = string.Empty; @@ -94,4 +94,21 @@ public partial class DebouncedTextField : MudComponentBase this.debounceTimer.Stop(); this.debounceTimer.Start(); } + + #region IDisposable + + public void Dispose() + { + try + { + this.debounceTimer.Stop(); + this.debounceTimer.Dispose(); + } + catch + { + // ignore + } + } + + #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Chat.razor.cs b/app/MindWork AI Studio/Pages/Chat.razor.cs index e411a9fa..deeda47f 100644 --- a/app/MindWork AI Studio/Pages/Chat.razor.cs +++ b/app/MindWork AI Studio/Pages/Chat.razor.cs @@ -100,6 +100,23 @@ public partial class Chat : MSGComponentBase #region Overrides of MSGComponentBase + protected override void DisposeResources() + { + try + { + this.splitterSaveTimer.Stop(); + this.splitterSaveTimer.Dispose(); + } + catch + { + // ignore + } + + base.DisposeResources(); + } + + #endregion + protected override Task ProcessIncomingMessage(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default { switch (triggeredEvent) @@ -111,6 +128,4 @@ public partial class Chat : MSGComponentBase return Task.CompletedTask; } - - #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Writer.razor.cs b/app/MindWork AI Studio/Pages/Writer.razor.cs index 6c137108..56fd0c5d 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor.cs +++ b/app/MindWork AI Studio/Pages/Writer.razor.cs @@ -152,4 +152,23 @@ public partial class Writer : MSGComponentBase this.suggestion = string.Join(' ', words.Skip(1)); this.StateHasChanged(); } + + #region Overrides of MSGComponentBase + + protected override void DisposeResources() + { + try + { + this.typeTimer.Stop(); + this.typeTimer.Dispose(); + } + catch + { + // ignore + } + + base.DisposeResources(); + } + + #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.51.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.51.md index ef784978..8e3eaf85 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.51.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.51.md @@ -1,2 +1,3 @@ # v0.9.51, build 226 (2025-08-xx xx:xx UTC) -- Fixed a bug in various assistants where some text fields were not reset when resetting. \ No newline at end of file +- Improved memory usage in several areas of the app. +- Fixed a bug in various assistants where some text fields were not reset when resetting.