我想知道是否有人知道一个已经存在的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;
}
}