public DisposableSpinner(IPhysicalElement physicalElement, int delay) { _physicalElement = physicalElement; _delay = delay; _cancellationTokenSource = new CancellationTokenSource(); _task = Task.Factory.StartNew(async() => { while (!_cancellationTokenSource.Token.IsCancellationRequested) { physicalElement.On(); await Task.Delay(delay); physicalElement.Off(); await Task.Delay(delay); } }, TaskCreationOptions.LongRunning); }
public static IDisposable SpinEach(this IPhysicalElement element, int milliseconds) { return(new DisposableSpinner(element, milliseconds)); }