C# 计数器计数到目标数

我试图找出是否有人知道现有的 C# 插件,该插件将以指定的速度计数到目标数字。

我希望能够指定:

  • 起始编号

  • 结束编号

  • 从开始到结束应该花费的时间。

  • 可以在计数器完成时执行的自定义回调函数。

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

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

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

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

如果他们有任何关于如何在 ASP.NET Core 中实现 countup.js 的示例,他们会对我有很大帮助


不负相思意
浏览 102回答 1
1回答

森林海

您可以创建一个可以在多种情况下为您服务的计时器服务:创建服务类: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;    }在 Program.Main 方法中将服务作为瞬态添加到 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;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript