timespantiming.cs

来自「基于LINQ和.NET 3.5 的数据库源码」· CS 代码 · 共 44 行

CS
44
字号
using System;

namespace Lephone.Util.TimingTask.Timings
{
	public class TimeSpanTiming : ITiming
	{
		protected int SpanSeconds;
		protected DateTime LastActiveTime;
		protected NowProvider NowTimeProvider;

        public TimeSpanTiming(TimeSpan Span) : this(Span, NowProvider.Instance) { }

		public TimeSpanTiming(TimeSpan Span, NowProvider NowTimeProvider)
		{
			this.SpanSeconds = (int)Span.TotalSeconds;
			this.NowTimeProvider = NowTimeProvider;
			LastActiveTime = DateTime.MinValue;
		}

		public virtual bool TimesUp()
		{
			int ts = (int)TimeSpanFromNowOn().TotalSeconds;
			return ( ts <= 0 );
		}

		public virtual TimeSpan TimeSpanFromNowOn()
		{
			DateTime dt = GetNextActiveTime();
			TimeSpan ts = dt.Subtract(NowTimeProvider.Now);
			return ts;
		}

		public virtual void Reset()
		{
			LastActiveTime = NowTimeProvider.Now;
		}

		protected DateTime GetNextActiveTime()
		{
			return LastActiveTime.AddSeconds(SpanSeconds);
		}
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?