【发布时间】:2020-05-05 09:32:10
【问题描述】:
我想在 blazor 中每两分钟调用一次特定的函数。我尝试了以下代码
@using System;
@inherits Microsoft.AspNetCore.Components.OwningComponentBase<TestBlazor.Client.APIGateway>
//Html code to display list.
@code{
private IEnumerable<TestBlazor.Model.Message> MessagesList;
protected override OnInitialized()
{
SetTimer();
}
private void SetTimer()
{
var startTimeSpan = TimeSpan.Zero;
var periodTimeSpan = TimeSpan.FromMinutes(1);
var timer = new System.Threading.Timer((e) =>
{
GetMessage();
}, null, startTimeSpan, periodTimeSpan);
}
private void GetMessage()
{
var filter = new TestBlazor.Model.Filter.MessageFilter()
{
Origination = Model.Enums.MessageOrigination.Patient,
PharmacyId = 1
};
MessagesList = Service.MessageService.GetFilteredSummaryAsync(filter).Result;
MessagesList = MessagesList.Select(x => { x.DateTime = DateTime.Now; return x; }).ToList();
base.InvokeAsync(StateHasChanged);
}
}
这按预期工作,但问题是当我导航到其他组件并再次返回此消息组件时,我得到以下异常
无法访问已处置的对象。 对象名称:“消息” 其中“消息”是 Razor 组件名称。如果有人能告诉我我到底做错了什么会很有帮助?或者还有其他解决方案吗?
【问题讨论】:
标签: c# asp.net-core blazor