private async Task StepTask() { for (int i = 0; i < _profile.Steps.Count; i++) { var step = _profile.Steps[i]; if (step.Finished) { //This could occurr if we had an unsuccessful //brew and we are trying to continue the process. continue; } await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { CurrentStep = step; //Check if theres a step after this if (_profile.Steps.Count > i + 1) { NextStep = _profile.Steps[i + 1]; } else { NextStep = null; } }); await CurrentStep.RunTaskAsync(_cancelToken); await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { OnPropertyChanged("PercentageCompleted"); }); } Stop(); }