Improve resource disposal in components to prevent memory leaks

This commit is contained in:
Thorsten Sommer 2025-08-15 20:48:35 +02:00
parent 8de5921217
commit 29694e7edb
Signed by: tsommer
GPG Key ID: 371BBA77A02C0108
6 changed files with 86 additions and 5 deletions

View File

@ -384,7 +384,17 @@ public abstract partial class AssistantBase<TSettings> : AssistantLowerBase wher
protected override void DisposeResources()
{
this.formChangeTimer.Dispose();
try
{
this.formChangeTimer.Stop();
this.formChangeTimer.Dispose();
}
catch
{
// ignore
}
base.DisposeResources();
}
#endregion

View File

@ -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
}

View File

@ -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
}

View File

@ -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<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default
{
switch (triggeredEvent)
@ -111,6 +128,4 @@ public partial class Chat : MSGComponentBase
return Task.CompletedTask;
}
#endregion
}

View File

@ -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
}

View File

@ -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.
- Improved memory usage in several areas of the app.
- Fixed a bug in various assistants where some text fields were not reset when resetting.