public bool Update() { if (!IsActive) { return(false); } if (TimeElapsed()) { TimeoutAction.Invoke(); TimeOutCount++; ResetTimeout(); } return(true); }
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(); } }