timer - Blazor 中的秒表组件
问题描述
经过大量探索,我们没有 blazor 组件秒表。我需要在 blazor 页面中显示经过的时间下面是我的代码,我们可以使用开始和停止按钮计算经过的时间我有点卡在如何在 blazor 页面中调用和显示经过的时间。有什么建议吗?
@using System.Diagnostics;
<p> <button @onclick=@Start>Start</button></p>
<p> <button @onclick=@Stop>Stop</button></p>
@code
{
protected override void OnInitialized()
{
base.OnInitialized();
Stopwatch sw = new Stopwatch();
TimeSpan tt1 = TimeSpan.Zero;
}
private double elapsedtime;
private DateTime startTime;
private DateTime stopTime;
private bool running = false;
public void Start()
{
this.startTime = DateTime.Now;
this.running = true;
}
public void Stop()
{
this.stopTime = DateTime.Now;
this.running = false;
}
public double ElapsedTimeSecs()
{
TimeSpan interval;
if (running)
interval = DateTime.Now - startTime;
else
interval = stopTime - startTime;
return interval.TotalSeconds;
}
}
解决方案
你需要一个定时器:
@implements IDisposable
...
private System.Threading.Timer _timer;
public void Start()
{
this.startTime = DateTime.Now;
_timer = new System.Threading.Timer(async _ =>
{
elapsedtime = ElapsedTimeSecs();
await InvokeAsync(StateHasChanged);
}, null, 0, 1000);
}
public void Stop()
{
this.stopTime = DateTime.Now;
_timer?.Dispose();
_timer = null;
}
public void Dispose()
{
_timer?.Dispose();
}
然后显示elapsedtime
您想要的方式和位置。
推荐阅读
- c++ - C++如何实现回调?
- javascript - 重新加载
- 带有事件处理函数
- c# - C# for 循环:检查 DateTimePicker 是周末还是在数据库中
- r - 通过单击数据表行和操作按钮向数据框添加新行
- python - 从另一个字典的特定值创建新的 Python 字典
- python - 我想在嵌套列表 Python 中追加列表
- javascript - 如何为单词设置动画,使每个字母都改变颜色
- python - 每第 n 个 xtick 标签使 Matplotlib 日期 xtick 标签更加稀疏(散布)
- python - 当我在 Pycharm 中运行此代码时,我没有得到任何输出,它只是显示-----进程以退出代码 0 完成。请帮我解决这个问题
- sql - PostgreSQL。如果某列中的值出现两次或更多次,则排除行