Beispiel #1
0
        // Metóda ktorú vykonáva BackgroundWorker po jeho vytvorení.
        private void SimulationWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            // Najskôr dôjde k inicializácii simulácie.
            this._controller.InitilizeSimulation(SimResultView);
            // Nasleduje zavolanie metódy na spustenie simulácie v kontrolery, kde je ako parameter zaslaná referencia na backgroundworkera, aby bolo možné zistiť,
            // či je požadované predčasné ukončenie simulácie.
            this._controller.RunSimulation(this.simulationWorker);
            // Po skončení simulácie sa z kontrolera získajú posledne inicializované dáta a výsledok je zobrazený na výstupe.
            var lastData = new DataForUpdate(this._controller.lastDataForUpdate);

            lastData.redrawGraphs = true;
            this.simulationWorker.ReportProgress(0, lastData);

            // Vyhodnocuje sa, či došlo k predčasnému skončeniu simulácie.
            if (this.simulationWorker.CancellationPending)
            {
                // V prípade, že došlo k predčasnému ukončeniu simulácie, zisťuje sa či došlo k jej úplnému zastaveniu alebo len k jej pozastaveniu.
                if (this._controller.SimulationStatus != Model.Simulation.SimulationStatus.FINISHED)
                {
                    e.Cancel = true;
                }
            }
        }
Beispiel #2
0
        // Metóda, ktorú vykonáva backgroundworker po nahlásení zmeny stavu. Obsahuje dáta, ktoré sa majú zobraziť na výstupe.
        private void SimulationWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
            DataForUpdate data = (DataForUpdate)e.UserState;

            this.SimResultView.Update(data);
        }