我想每 60 秒将最小数字增加 5,并且不得超过 Xamarin/C# 中的最大数字

问题描述

所以,我正在处理一个显示两个金额的项目。第一个是最小数量,它是恒定的。但是,第二个是每60秒的进度(增量),但该数字不得超过一定时间内设置的最大数量一个例子是: 我的最低金额为 10,000。 最大金额 = 50,000。 储蓄期限= 93 天。 现在,我希望进度计数(显示储蓄如何增长的标签)在特定给定时间(可能是 60 秒)内继续增加,直到第 93 天不超过最大数量

我的问题是,我如何实现这一目标?什么方法最能得到好的结果?

这是我目前的实现:

public string TotalBalance
    {
        get
        {
            //string newBal;
            double min;
            double max;
            double dys;
            dys = double.Parse(days);
            double calc = dys * 1440;
            min = double.Parse(amount);
            max = double.Parse(totalReturn);
            double costpermin = max / calc;
            if (dys>0)
            {
                string kems;
                Device.StartTimer(new TimeSpan(0,60),() =>
                {
                    // do something every 60 seconds
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        double pel = min + costpermin++;
                        string polo = pel.ToString();
                        string Bal = Math.Round(Convert.Todouble(polo),2).ToString("C",System.Globalization.CultureInfo.GetCultureInfo("en-us")).Replace("$","N");

                        kems = Bal;
                        var updamt = Bal;
                        MessagingCenter.Send<object,string>(this,"timer",updamt);
                    });
                    return true; // runs again,or false to stop
                });
                return kems;
            }
            else
            {
                string meeBal = Math.Round(Convert.Todouble(this.totalReturn),"N");
                return meeBal;
            }
        }

        set
        {
            TotalBalance = value;
            OnPropertyChanged(nameof(TotalBalance));
        }
    }

我在模型中添加了 deviceTimer 以便能够实时更新视图。但是,也存在一些问题。 1. 计算是正确的,但只在前 60 秒后计算。所以在外观上,金额标签显示为空。并且视图仍然没有更新。 2.明天不继续计算,所以如果今天你的总增长显示10,200.12,那么当你明天再次打开应用程序时,它会重新开始计数,而不是从开始的地方开始。

解决方法

尝试使用 Device.StartTimer() 定期增加计数

https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.device.starttimer?view=xamarin-forms