private void RepeatButtonPressed(Xbox360ControllerButton 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); }
public Xbox360ControllerButtonEventArgs(Xbox360ControllerButton button) { _button = button; }
protected virtual void OnButtonPressed(Xbox360ControllerButton button) { ButtonPressed?.Invoke(this, new Xbox360ControllerButtonEventArgs(button)); }