用timespan防止网页重复刷新计数的方法

本文介绍如何利用TimeSpan来控制页面的刷新频率,通过具体示例展示如何设置时间间隔,并提供了一种检查时间差的方法,确保页面不会在设定的时间内重复刷新。

主要是运用timespan来控制 ,这里先要说说timespan的用法,timespan的定义规则如下:

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]

其中方括号里[ ]的是可选的选项,冒号和句号(:与。)是必需要的原义字符,需要从花括号{}里由竖线( |)里任选一项,其它的项如下说明:

说明
ws
可选的空白
"-"
可选的减号,指示负 TimeSpan
d
天,范围从 0 到 10675199
hh
小时,范围从 0 到 23
mm
分钟,范围从 0 到 59
ss
可选的秒,范围从 0 到 59
ff
可选的秒的小数部分,有 1 到 7 个小数位
s 的分量必须整体指定大于或等于 MinValue 并小于或等于 MaxValue 的时间间隔。
举个例子如下:
比如你要设定间隔时间为14天的话,就是14,就格式就是 14.00:00:00  
或者  6.21:22:33代表是6天21点22小时33秒
下面我就来实现防止刷新的办法,
private static string updateTime = "1";//这里代表一天的时间
private string Pretime="2006-12-5 11:59:07";//上次刷新的时间
private datetime currenttime=datetime.now;//当前时间
if(currenttime.Subtract(DateTime.Parse(Pretime))>DateTime.Parse(updateTime))
{
 //调用刷新代码
}
另外一个求得时间间隔的函数,
 //求得两个日期之间的时间间隔
    private double DateDiff(string howtocompare, DateTime date1, DateTime date2)
    {
        double diff = 0;
        TimeSpan TS = new TimeSpan(date2.Ticks - date1.Ticks);
        switch (howtocompare.ToLower())
        {
            case "year":
                diff = Convert.ToDouble(TS.TotalDays / 365);
                break;
            case "month":
                diff = Convert.ToDouble((TS.TotalDays / 365) * 12);
                break;
            case "day":
                diff = Convert.ToDouble(TS.TotalDays);
                break;
            case "hour":
                diff = Convert.ToDouble(TS.TotalHours);
                break;
            case "minute":
                diff = Convert.ToDouble(TS.TotalMinutes);
                break;
            case "second":
                diff = Convert.ToDouble(TS.TotalSeconds);
                break;
        }
        return diff;
    }
请分析一下这段代码 private void OnEnableOrDisableAutoPass() { try { IsProcessingCoverage = true; if (IsAutoPassEnabled) { // This means trader has not enabled the AutoPass previously, and is trying to enable AutoPass now. if (SelectedInvestmentManagers.IsNullOrEmpty() || SelectedProductGroups.IsNullOrEmpty()) return; var coverageStatusList = SelectedInvestmentManagers.Join(SelectedProductGroups, _ => true, _ => true, (mgr, grp) => { var coverageStatus = _directiveSession.CreateCoverageStatusEntity(); coverageStatus.TraderId = EnvironmentProvider.GetLoggedInPilotUserId(); coverageStatus.InvestorId = mgr.ToString(); coverageStatus.InstrumentClass = Enum.TryParse<InstrumentClass>(grp.ToString(), out var productGroup) ? productGroup : InstrumentClass.UNKNOWN; return coverageStatus; }).ToList(); try { var result = _directiveSession.StartAutoPass(coverageStatusList); if (result?.Success != true) { // The coverage update is failed, as TAP does not publish the coverage status when action failed, so just UI has to rollback the change by itself. // User has to adjust the coverage and re-submit it again. IsAutoPassEnabled = !IsAutoPassEnabled; } ShowProxyResult(result, nameof(OnEnableOrDisableAutoPass)); } catch (Exception ex) { ShowProxyResult(null, nameof(OnEnableOrDisableAutoPass)); Log.Error($"{ComponentID}|{Identifier}|OnEnableOrDisableAutoPass|StartAutoPass|Exception: {ex.Message}\nStackTrace: {ex.StackTrace}"); } } else { if (_coverageStatusList == null || _coverageStatusList.IsNullOrEmpty()) return; try { var result = _directiveSession.StopAutoPass(_coverageStatusList); if (result?.Success != true) { // The coverage update is failed, as TAP does not publish the coverage status when action failed, so just UI has to rollback the change by itself. // User has to adjust the coverage and re-submit it again. IsAutoPassEnabled = !IsAutoPassEnabled; } ShowProxyResult(result, nameof(OnEnableOrDisableAutoPass)); } catch (Exception ex) { ShowProxyResult(null, nameof(OnEnableOrDisableAutoPass)); Log.Error($"{ComponentID}|{Identifier}|OnEnableOrDisableAutoPass|StopAutoPass|Exception: {ex.Message}\nStackTrace: {ex.StackTrace}"); } } } finally { IsProcessingCoverage = false; } }
最新发布
08-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值