using System.ComponentModel; using System.Threading; namespace OpenTap.Plugins.BasicSteps { public abstract class LoopTestStep : TestStep { protected CancellationTokenSource breakLoopToken { get; private set; } [Browsable(false)] protected CancellationToken BreakLoopRequested => breakLoopToken.Token; public LoopTestStep() { breakLoopToken = new CancellationTokenSource(); } public void BreakLoop() { breakLoopToken.Cancel(); } /// Always call base.Run in LoopTestStep inheritors. public override void Run() { breakLoopToken = new CancellationTokenSource(); } } }