Blazor 服务器端计时器是 运行 amok
Blazor Server Side Timer is running amok
我有这个 ServerSide Blazor 运行ning 并且我有:
listTimer = new System.Timers.Timer();
listTimer.Interval = 1000;
listTimer.Elapsed += async (s, e) =>
{
await Utils.LogToConsole(jsRuntime, DateTime.Now.ToString());
}
`
但是当我 运行 这时,我在 Chrome 控制台中获得了大量日志,但我希望每 1000 毫秒只看到日志。任何人都看到了这个问题并找到了解决方法。是的,我可以检查实际时间并进行比较,但我不喜欢它像疯了一样触发。
销毁组件时需要取消订阅timer-Event。最简单的方法是处理定时器本身。
@using System
@implements IDisposable
@code {
public void Dispose()
{
listTimer?.Dispose();
}
}
... I get huge amounts of log in the Chrome console
只有当您多次创建和分配计时器时才会发生这种情况。
你没有post那个代码,但我想你需要这样的东西:
if (listTimer == null)
{
listTimer = new System.Timers.Timer();
listTimer.Interval = 1000;
listTimer.Elapsed += async (s, e) =>
{
await Utils.LogToConsole(jsRuntime, DateTime.Now.ToString());
}
}
并且 Timer 是 IDisposable ,所以添加:
@implements IDisposable
并将此发送给@code:
public void Dispose()
{
listTimer?.Dispose();
}
我有这个 ServerSide Blazor 运行ning 并且我有:
listTimer = new System.Timers.Timer();
listTimer.Interval = 1000;
listTimer.Elapsed += async (s, e) =>
{
await Utils.LogToConsole(jsRuntime, DateTime.Now.ToString());
}
`
但是当我 运行 这时,我在 Chrome 控制台中获得了大量日志,但我希望每 1000 毫秒只看到日志。任何人都看到了这个问题并找到了解决方法。是的,我可以检查实际时间并进行比较,但我不喜欢它像疯了一样触发。
销毁组件时需要取消订阅timer-Event。最简单的方法是处理定时器本身。
@using System
@implements IDisposable
@code {
public void Dispose()
{
listTimer?.Dispose();
}
}
... I get huge amounts of log in the Chrome console
只有当您多次创建和分配计时器时才会发生这种情况。
你没有post那个代码,但我想你需要这样的东西:
if (listTimer == null)
{
listTimer = new System.Timers.Timer();
listTimer.Interval = 1000;
listTimer.Elapsed += async (s, e) =>
{
await Utils.LogToConsole(jsRuntime, DateTime.Now.ToString());
}
}
并且 Timer 是 IDisposable ,所以添加:
@implements IDisposable
并将此发送给@code:
public void Dispose()
{
listTimer?.Dispose();
}