簡體   English   中英

MVVM Razor 頁面刷新 (F5) 產生錯誤 System.ObjectDisposedException

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM