|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Collections.Concurrent;
-
- namespace HBLConsole.Service
- {
- /// <summary>
- /// 延时下降沿触发
- /// </summary>
- public class DelayTTrig
- {
-
- private volatile static ConcurrentDictionary<string, DelayTTrig> _Instance;
- public static DelayTTrig GetInstance(string name)
- {
- if (_Instance == null) _Instance = new ConcurrentDictionary<string, DelayTTrig>();
- if (!_Instance.ContainsKey(name)) _Instance.TryAdd(name, new DelayTTrig());
- return _Instance[name];
- }
- private DelayTTrig() { }
-
- /// <summary>
- /// 当前时间
- /// </summary>
- public long ET { get; private set; } = 0;
-
- private bool flag1;
- private bool Q { get; set; }
- private bool IN1
- {
- set
- {
- Q = !value && flag1;
- flag1 = value;
- }
- }
-
- private bool flag;
- DateTime startTime = new DateTime();
-
- /// <summary>
- /// 开始计时(时间单位/秒)
- /// </summary>
- /// <param name="PT">计时时间(单位 秒)</param>
- /// <returns></returns>
- 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;
- }
- IN1 = ET >= PT;
- return Q;
- }
- }
- }
|