为了账号安全,请及时绑定邮箱和手机立即绑定

C# 计数器计数到目标数

C# 计数器计数到目标数

不负相思意 2023-09-07 16:34:26
我试图找出是否有人知道现有的 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 的示例,他们会对我有很大帮助
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

您可以创建一个可以在多种情况下为您服务的计时器服务:


创建服务类:


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;

}

}


查看完整回答
反对 回复 2023-09-07
  • 1 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信