// Julkiset metodit, joita voidaan kutsua käyttöliittymästä /// <summary> /// Tällä metodilla käsketään prosessia ottamaan yhteys simulaattoriin, jos yhteyttä ei vielä ole. /// Jos sekvenssin tila yhteyttä muodostaessa on jokin muu kuin Impregnation, pysäytetään sekvenssi. /// </summary> public void AlustaProsessi() { if (clientStatus != "Connected" || clientStatus != "Connecting") { prosessi.YhteysMuuttui += new YhteysEventHandler(YhteysMuuttui); prosessi.YhdistaProsessiin(); Trace.WriteLine("tila logiikassa yhdistämisen jälkeen: " + clientStatus); if (clientStatus == "Connected") { PaivitaTiedot handler = paivita; handler?.Invoke(); // Pysäytetään sekvenssi yhteyden palatessa, jos sekvenssi on ollut käynnissä yhteyden katketessa if (tila != 1) { kaynnistetty = false; PysaytaSekvenssi(); } } } if (!kaynnistetty) { // Tilataan event prosessin mittauksien muuttumisesta ja määritellään sille event handler prosessi.MikaMuuttui += new OmaEventHandler(PaivitaArvot); kaynnistetty = true; } }
// Metodi, jota kutsutaan event handlerilla eventin noustessa. Metodilla päivitetään päivitetyt arvot toimintalogiikan tietoon private void PaivitaArvot(object source, MuuttuneetEvent m) { Dictionary <string, int> muuttuneet = m.PalautaArvot(); foreach (string avain in muuttuneet.Keys) { if (muuttuneet[avain] == 0) { mitattavatBool[avain] = prosessi.PalautaBool(avain); } if (muuttuneet[avain] == 1) { mitattavatDouble[avain] = prosessi.PalautaDouble(avain); } if (muuttuneet[avain] == 2) { mitattavatInt[avain] = prosessi.PalautaInt(avain); } } // Lopuksi nostetaan event ja ilmoitetaan invokella käyttöliittymälle muuttuneista mittauksista PaivitaTiedot handler = paivita; handler?.Invoke(); }