[英]MVVM Razor page refresh (F5) produces error System.ObjectDisposedException
目標是啟動進入Razor頁面的長時間運行的后台任務。 后台任務對數據庫所做的更改會在 Razor 頁面的表中更新。
我可以更改左側的菜單,並且可以將 go 返回頁面。 但是當我在頁面運行期間按 F5 時,我收到以下錯誤: System.ObjectDisposedException: '無法在渲染器被釋放后處理掛起的渲染。 Object 名稱:“渲染器”。
我不知道所采取的方法是否完全錯誤,是否必須以其他方式完成。
我希望在 Razor 頁面中啟動火災並忘記任務不會損害頁面(剃須刀頁面):
protected override async Task OnInitializedAsync()
{
ViewModel.PropertyChanged += async (sender, e) =>
{
await InvokeAsync(() =>
{
StateHasChanged();
});
};
await base.OnInitializedAsync();
if (!ViewModel.IsBusy)
{
_ = Task.Factory.StartNew(ViewModel.AddItems);
}
}
ViewModel 中的方法:
public void AddItems()
{
IsBusy = true;
CancellationTokenSource stoppingToken = null;
stoppingToken = new CancellationTokenSource();
CancellationToken token = stoppingToken.Token;
for (int i = 0; i < 10; i++)
{
List.Add($"{i}");
OnPropertyChanged(nameof(List));
var cancellationTriggered = token.WaitHandle.WaitOne(1000);
}
IsBusy = false;
}
您可以在此處找到重現問題的示例:在此處輸入鏈接描述
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.