public SequenceObserver(IInputPhysicalElement physicalElement, int delay) { _cancellationTokenSource = new CancellationTokenSource(); _task = Task.Factory.StartNew(async() => { while (!_cancellationTokenSource.Token.IsCancellationRequested) { Push(new Timestamped <int>(physicalElement.Read(), DateTime.Now.Ticks)); await Task.Delay(delay); } }, TaskCreationOptions.LongRunning); }
public static IDisposable Observe(this IInputPhysicalElement element, int milliseconds, Action <Timestamped <int> > callback) { return(new SequenceObserver(element, milliseconds).Subscribe(new DelegateObserver(callback))); }