using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Concurrent;
namespace BPASmartClient.Helper
{
///
/// 延时下降沿触发
///
public class DelayTTrig
{
private volatile static ConcurrentDictionary _Instance;
public static DelayTTrig GetInstance(string name)
{
if (_Instance == null) _Instance = new ConcurrentDictionary();
if (!_Instance.ContainsKey(name)) _Instance.TryAdd(name, new DelayTTrig());
return _Instance[name];
}
private DelayTTrig() { }
///
/// 当前时间
///
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();
///
/// 开始计时(时间单位/秒)
///
/// 计时时间(单位 秒)
///
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;
}
}
}