我怎样才能确定布尔值在C#中是否会在几秒钟内保持为假?

时间:2017-04-28 07:20:27

标签: c#

因此,如果我有一些不断从false变为true且从true变为false的布尔值,我怎么知道它是否在选定的秒数内保持为假?并且仍然没有暂停我的代码只是为了等待它几秒钟的假...并且每次它变为真时,计时器重置

编辑: 这就是我所尝试的一切 但正如预期的那样,它会暂停一切并等待所选的秒数

 static bool IsFalseFor(int MILseconds, bool Target)
    {
        while (Target == false)
        {
            for(int i = 0; i != 10; i++)
            {
                if(Target == true)
                {
                    return false;
                }
                Thread.Sleep(MILseconds/10);
            }
            return true;
        }
        return false;
    }

1 个答案:

答案 0 :(得分:1)

我能想到的最简单的实现:

    public DateTime lastSetFalse { get; private set; }

    public TimeSpan lastStayedFalseFor { get; private set; }

    private bool _flag;
    public bool Flag
    {
        get
        {
            return _flag;
        }
        set
        {
            if (_flag && !value)
            {
                lastSetFalse = DateTime.Now;
            }
            if (!_flag && value && lastSetFalse != null)
            {
                lastStayedFalseFor = DateTime.Now - lastSetFalse;
                //raise an event if necessary
            }
            _flag = value;
        }
    }

使用Flag字段存储布尔值。注意lastStayedFalseFor仅返回变量从false更改为true后的持续时间,或者,如果变量仍为false时需要持续时间,则添加并使用以下而不是lastStayedFalseFor:

    public TimeSpan stayingOrStayedFalseFor
    { get { return _flag ? lastStayedFalseFor : DateTime.Now - lastSetFalse;  } }