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 void Dispose() { _cancellationTokenSource.Cancel(); _task.Wait(_delay * 10); _physicalElement.Off(); }