C#计数器,以计数到目标数字



我想知道是否有人知道一个已经存在的c#插件,它将以指定的速度达到目标数量。

我希望能够指定:

  • 起始编号
  • 结束编号
  • 从开始到结束所需的时间
  • 当计数器为完成

我发现这些插件一个用于javascript,一个用于asp.net:

https://inorganik.github.io/countUp.js/

https://www.nuget.org/packages/Wisej-2-CountUp/

我正在用asp.net核心和blazor制作一个应用程序,我需要一些适合blazor的东西,因为这是一项新技术,并且没有太多关于如何实现javascript插件的信息

如果他们有任何关于如何在asp.net核心中实现countup.js的例子他们会帮我很多

您可以创建一个定时器服务,它可以在许多场合为您服务:

创建服务类:

public class BlazorTimer
{
private Timer _timer;
internal void SetTimer(double interval)
{
_timer = new Timer(interval);
_timer.Elapsed += NotifyTimerElapsed;
_timer.Enabled = true;
_timer.Start();
}
private void NotifyTimerElapsed(object sender, ElapsedEventArgs e)
{
OnElapsed?.Invoke();
}
public event Action OnElapsed;
}

将服务添加到程序中的DI容器中。主方法,作为瞬态:

builder.Services.AddTransient(config =>
{
var blazorTimer = new BlazorTimer();
blazorTimer.SetTimer(1000);
return blazorTimer;
});

用法

@page "/"
@implements IDisposable
@inject BlazorTimer Timer
@count.ToString()

@code{
private int count = 0;
protected override void OnInitialized()
{
Timer.OnElapsed += NotifyTimerElapsed;
base.OnInitialized();
}
private void NotifyTimerElapsed()
{
// Note: WebAssembly Apps are currently supporting a single thread, which 
// is why you don't have to call
// the StateHasChanged method from within the InvokeAsync method. But it 
// is a good practice to do so in consideration of future changes, such as 
// ability to run WebAssembly Apps in more than one thread.
InvokeAsync(() => { count++; StateHasChanged(); });
}
public void Dispose()
{
Timer.OnElapsed -= NotifyTimerElapsed;
}

}

相关内容

  • 没有找到相关文章

最新更新