示例#1
0
        public bool ExitWait(string key, long timeout_ms = -1, int intensity_ms = 1)
        {
            TickTime start = TickTime.Now;

            if (!this.Contains(key))
            {
                return(false);
            }

            if (!intensity_ms.InClosedInterval(1, int.MaxValue))
            {
                intensity_ms = 1;
            }

            while (!this.Exit(key))
            {
                if (timeout_ms > 0 && TickTime.Timeout(start, timeout_ms, TickTime.Unit.ms))
                {
                    return(false);
                }

                try
                {
                    Thread.Sleep(intensity_ms);
                }
                catch// (Exception ex)
                {
                    //Exceptions.Write(ex);
                    return(false);
                }
            }

            return(true);
        }
示例#2
0
        public bool EnterWait(long timeout_ms = -1, int intensity_ms = 1)
        {
            TickTime start = TickTime.Now;

            if (!intensity_ms.InClosedInterval(1, int.MaxValue))
            {
                intensity_ms = 1;
            }

            while (!this.Enter())
            {
                if (timeout_ms > 0 && start.Timeout(timeout_ms))
                {
                    return(false);
                }

                try
                {
                    Thread.Sleep(intensity_ms);
                }
                catch
                {
                    return(false);
                }
            }

            return(true);
        }
示例#3
0
 public static bool Timeout(this TickTime start, long timeout, TickTime.Unit unit = TickTime.Unit.ms)
 {
     return(TickTime.Timeout(start, timeout, unit));
 }