初始化提交
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace JinYuan.Helper
|
||||
{
|
||||
/// <summary>
|
||||
/// 定时器重置时间间隔,定时器执行未超间隔则设置剩余时间后再次触发,超时则立即触发
|
||||
/// </summary>
|
||||
public class TimerReset : IDisposable
|
||||
{
|
||||
private Timer timer;
|
||||
private DateTime nextTime;
|
||||
|
||||
/// <summary>
|
||||
/// 使用using语句,在定时器TimerCallback中使用
|
||||
/// using语句块内为时间到时的执行代码,dispose计算使用的时间,来重设下次触发时间
|
||||
/// </summary>
|
||||
/// <param name="tim">定时器</param>
|
||||
/// <param name="ep">时间间隔</param>
|
||||
public TimerReset(Timer tim, int ep)
|
||||
{
|
||||
timer = tim;
|
||||
nextTime = DateTime.Now.AddMilliseconds(ep);//设置下次执行时间
|
||||
}
|
||||
public void Dispose()
|
||||
{
|
||||
//执行完后,重新设置定时器下次执行时间.
|
||||
TimeSpan timeout = nextTime.Subtract(DateTime.Now);
|
||||
if (timeout < TimeSpan.Zero)
|
||||
{
|
||||
timeout = TimeSpan.Zero;
|
||||
}
|
||||
|
||||
timer.Change(timeout, Timeout.InfiniteTimeSpan);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user