public bool Update()
            {
                if (!IsActive)
                {
                    return(false);
                }

                if (TimeElapsed())
                {
                    TimeoutAction.Invoke();
                    TimeOutCount++;
                    ResetTimeout();
                }

                return(true);
            }
Example #2
0
        public async void Start()
        {
            //需要阻止重复调用Start。
            if (isRunning)
            {
                return;
            }

            isRunning = true;
            Contract.Requires(_timeSpan != null);
            Contract.Requires(TimeoutAction != null);
            _source     = new CancellationTokenSource();
            _token      = _source.Token;
            waitingTask = Task.Delay(_timeSpan, _token);
            await waitingTask;

            if (!_token.IsCancellationRequested)
            {
                TimeoutAction?.Invoke();
            }
        }