/// <summary> /// Invoke an auto-play session, with the specified number of runs. /// The auto-play session is invoked as a separate Task /// </summary> public async Task Run(long noOfRuns) { CurrentAutoPlayState = Enums.AutoPlayState.Running; _logicSymbolGenerator.Reset(); _percentCompleted = 0; lock (_lock) { _autoRunData = new Dictionary <int, int>(); } _cancellationTokenSource = new CancellationTokenSource(); Task autoRunTask = new Task(() => { AutoRun(noOfRuns, _cancellationTokenSource.Token); }, _cancellationTokenSource.Token); autoRunTask.Start(); await autoRunTask; AutoRunCompleted(noOfRuns, _cancellationTokenSource.Token); }