private void Enc0Falling(object sender, PinValueChangedEventArgs pinValueChangedEventArgs)
 {
     Enc0Deboucer.Debouce(() => {
         Pushed?.Invoke(this, new EventArgs());
         //Console.WriteLine("ENC0 push");
     });
 }
        /// <summary>
        /// Perform an action when configuration changes. Note this requires config sources to be added with
        /// `reloadOnChange` enabled
        /// </summary>
        /// <param name="config">Configuration to watch for changes</param>
        /// <param name="action">Action to perform when <paramref name="config"/> is changed</param>
        /// <param name="delayInMilliseconds">Delay In Milliseconds</param>
        public static void OnChange(this IConfiguration config, Action action, int delayInMilliseconds = 500)
        {
            // IConfiguration's change detection is based on FileSystemWatcher, which will fire multiple change
            // events for each change - Microsoft's code is buggy in that it doesn't bother to debounce/dedupe
            // https://github.com/aspnet/AspNetCore/issues/2542
            var debouncer = new Debouncer(TimeSpan.FromMilliseconds(delayInMilliseconds));

            ChangeToken.OnChange <object>(config.GetReloadToken, _ => debouncer.Debouce(action), null);
        }
Esempio n. 3
0
        //  private readonly string _memberName;


        public OptionsItemChangesMonitor(
            IOptionsMonitor <TOptions> optionsMonitor,
            ILogger <OptionsItemChangesMonitor <TKey, TOptions, TOptionsItem> > logger,
            IEnumerable <KeyedItemsAccessor <TOptions, TOptionsItem, TKey> > itemAccessors
            )
        {
            // _optionsMonitor = optionsMonitor;
            _instance      = optionsMonitor.CurrentValue;
            _logger        = logger;
            _itemAccessors = itemAccessors.ToList();


            //  _itemsAccessor = itemsAccessor;
            _differ = new OptionsItemsDiffer <TKey, TOptions, TOptionsItem>();

            //  _itemAccessorExpression.Body.pro
            var debouncer = new Debouncer(TimeSpan.FromMilliseconds(500));

            _listening = optionsMonitor.OnChange((a) => debouncer.Debouce(() => OnChanged(a)));
        }