/// <summary> /// Raises the button pressed event. /// </summary> /// <param name="button">The button.</param> protected virtual void OnButtonPressed(LogitechF710Button button) { if (_disposed) { throw new ObjectDisposedException(nameof(LogitechF710)); } ButtonPressed?.Invoke(this, new LogitechF710ButtonEventArgs(button)); }
private void RepeatButtonPressed(LogitechF710Button button, int repeatDelay, int repeatRate, CancellationToken token) { Action action = null; action = new Action(() => { if (token.IsCancellationRequested) { return; } try { Task.Delay(repeatRate).Wait(token); } catch (OperationCanceledException) { } if (token.IsCancellationRequested) { return; } OnButtonPressed(button); Task.Run(action); }); Action wrapper = new Action(() => { if (token.IsCancellationRequested) { return; } try { Task.Delay(repeatDelay).Wait(token); } catch (OperationCanceledException) { } if (token.IsCancellationRequested) { return; } Task.Run(action); }); Task.Run(wrapper); }