From 4079298012c5fa16b0e04595df0fc2a7e9de1012 Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Wed, 5 Jul 2023 18:31:47 +0800 Subject: [PATCH] Check if the component is disposed --- .../AspNetCore/Components/AbpComponentBase.cs | 5 +++ .../Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs | 35 +++++++++++++++++-- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs index dc1923f180..47a0d570bf 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components/Volo/Abp/AspNetCore/Components/AbpComponentBase.cs @@ -168,6 +168,11 @@ public abstract class AbpComponentBase : OwningComponentBase protected virtual async Task HandleErrorAsync(Exception exception) { + if (IsDisposed) + { + return; + } + Logger.LogException(exception); await InvokeAsync(async () => { diff --git a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs index 3bcc507e39..f476ecad89 100644 --- a/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs +++ b/framework/src/Volo.Abp.BlazoriseUI/AbpCrudPageBase.cs @@ -215,9 +215,9 @@ public abstract class AbpCrudPageBase< protected async override Task OnInitializedAsync() { - await SetPermissionsAsync(); - await SetEntityActionsAsync(); - await SetTableColumnsAsync(); + await TrySetPermissionsAsync(); + await TrySetEntityActionsAsync(); + await TrySetTableColumnsAsync(); await InvokeAsync(StateHasChanged); } @@ -231,7 +231,15 @@ public abstract class AbpCrudPageBase< await base.OnAfterRenderAsync(firstRender); } + private async Task TrySetPermissionsAsync() + { + if (IsDisposed) + { + return; + } + await SetPermissionsAsync(); + } protected virtual async Task SetPermissionsAsync() { @@ -579,13 +587,34 @@ public abstract class AbpCrudPageBase< return ValueTask.CompletedTask; } + private async ValueTask TrySetEntityActionsAsync() + { + if (IsDisposed) + { + return; + } + + await SetEntityActionsAsync(); + } + protected virtual ValueTask SetEntityActionsAsync() { return ValueTask.CompletedTask; } + + private async ValueTask TrySetTableColumnsAsync() + { + if (IsDisposed) + { + return; + } + + await SetTableColumnsAsync(); + } protected virtual ValueTask SetTableColumnsAsync() { + return ValueTask.CompletedTask; }