BlazorChartjs
BlazorChartjs copied to clipboard
Dispose reference
Hello Enrico,
I re-create the charts on demand and I have some memory leaks because some references must be disposed (I am not an expert on this issue).
1.- moduleTask in ChartjsInterop:
public async ValueTask DisposeAsync()
{
if (moduleTask.IsValueCreated)
{
await (await moduleTask.Value).DisposeAsync();
}
}
2.- JsModule and dotNetObjectRef in Chart.razor. :
protected override async Task OnAfterRenderAsync(bool firstRender)
{
try
{
...
dotNetObjectRef?.Dispose();
dotNetObjectRef = DotNetObjectReference.Create(Config);
JSModule ??= new ChartJsInterop(JSRuntime);
....
}
catch (ObjectDisposedException)
{
// Sometimes the object reference is released but JS invoke some event.
}
}
public async ValueTask DisposeAsync()
{
dotNetObjectRef?.Dispose();
dotNetObjectRef = null;
if (JSModule is not null)
{
await JSModule.DisposeAsync();
JSModule = null;
}
}
Let me know what do you think :) Thank you, Gaston
Thank you Gaston. I'll add those suggestion in my next release. Enrico