Open gmlloves opened 1 year ago
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
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:
2.- JsModule and dotNetObjectRef in Chart.razor. :
Let me know what do you think :) Thank you, Gaston