示例#1
0
        /// <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));
        }
示例#2
0
        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);
        }
示例#3
0