Example #1
0
 private void UpdateUi()
 {
     GridValsVm.UpdateData(Star5Grid.CurValuesAsP2Vs());
     GridDeltasVm.UpdateData(Star5Grid.CurDeltasAsP2Vs());
     AbsDelta           = A2dUt.flattenRowMajor(Star5Grid.Stars).Average(st => st.AbsDelta);
     NoiseField         = A2dUt.flattenRowMajor(Star5Grid.Stars).Average(st => st.NoiseField);
     NoiseLevelVm.Value = (NoiseField > AbsDeltaTargetVm.Value) ? NoiseLevelVm.Value - 0.0025f : NoiseLevelVm.Value + 0.0025f;
     OnPropertyChanged("Generation");
     OnPropertyChanged("ElapsedTime");
 }
Example #2
0
        private async void DoStart()
        {
            _cancellationTokenSource = new CancellationTokenSource();
            _isRunning = true;
            CommandManager.InvalidateRequerySuggested();

            await Task.Run(() =>
            {
                _stopwatch.Start();

                for (var i = 0; _isRunning; i++)
                {
                    // Star5Grid.GetDeltas();
                    Star5Grid.Update(
                        step: StepSizeVm.Value,
                        noise: NoiseLevelVm.Value,
                        nfDecay: NoiseFieldDecayVm.Value,
                        absDeltaToNoise: DeltaToNoiseVm.Value,
                        nfCpl: NoiseFieldCplVm.Value,
                        ffCpl: FixedFieldCplVm.Value
                        );

                    if (_cancellationTokenSource.IsCancellationRequested)
                    {
                        _isRunning = false;
                        _stopwatch.Stop();
                        CommandManager.InvalidateRequerySuggested();
                    }

                    if (i % (int)DisplayFrequencySliderVm.Value == 0)
                    {
                        Application.Current.Dispatcher.Invoke
                        (
                            UpdateUi,
                            DispatcherPriority.Background
                        );
                    }
                }
            }, _cancellationTokenSource.Token
                           );
        }