ale*_*lex 3 blazor blazor-server-side
我的ChangeValues服务器端事件每 5 秒发生一次,但在客户端,我只看到number变量的第一个值。见下面的代码
@page "/"
<button class="btn btn-primary" @onclick="ChangeValues">Click me</button>
<b>@number</b>
@code {
double number;
private Random rnd = new Random();
private System.Threading.Timer _timer;
void ChangeValues()
{
number = rnd.NextDouble();
Console.WriteLine(number);
}
private void DoWork(object state)
{
ChangeValues();
}
protected override async Task OnInitializedAsync()
{
_timer = new System.Threading.Timer(DoWork, null, TimeSpan.Zero,
TimeSpan.FromSeconds(5));
}
}
Run Code Online (Sandbox Code Playgroud)
当您使用计时器(将在另一个线程上触发)时,您必须使用 Invoke 调用 StateHasChanged():
private async void DoWork(object state)
{
ChangeValues();
await InvokeAsync(StateHasChanged);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1264 次 |
| 最近记录: |