using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.Concurrent; namespace HBLConsole.Service { /// /// 延时操作 /// public class Delay { /// /// 计时条件 /// //public bool IN { get; set; } private volatile static ConcurrentDictionary _Instance; public static Delay GetInstance(string name) { if (_Instance == null) _Instance = new ConcurrentDictionary(); if (!_Instance.ContainsKey(name)) _Instance.TryAdd(name, new Delay()); return _Instance[name]; } private Delay() { } /// /// 移除指定的定时器 /// /// public static void RemoveDelay(string name) { if (_Instance.ContainsKey(name)) _Instance.TryRemove(name, out Delay delay); } /// /// 当前时间 /// public long ET { get; private set; } = 0; public bool Q { get; private set; } private bool flag; DateTime startTime = new DateTime(); /// /// 开始计时(时间单位/秒) /// /// 计时时间(单位 秒) /// public bool Start(bool IN, int PT) { if (IN) { if (!flag) { startTime = DateTime.Now; flag = true; } if (ET < PT) ET = Convert.ToInt64(DateTime.Now.Subtract(startTime).TotalSeconds); } else { ET = 0; flag = false; } Q = ET >= PT; return Q; } } }