Ik wil graag in mijn programma GUI en berekeningen scheiden.
Ik hanteer de eenvoudige regel: in de code voor berekeningen staat geen enkele verwijzing naar de GUI.
Voor de invoer is dat eenvoudig. Maar voor de uitvoer is het lastiger, omdat de berekeningen in een loop gebeuren en ik graag elke iteratie, dus realtime, mijn GUI wil updaten (bv de laatst berekende uitvoer aan een tabel of grafiek toevoegen).
Nu doe ik bijvoorbeeld:
Dit werkt prima, maar de routine voor de berekeningen schrijft direct naar de GUI. Dat wil ik niet.
Om dit op te lossen dacht ik aan:
1. Zet een timer in je GUI, die om de zoveel tijd kijkt of er nieuwe data is.
2. Schrijf je data weg naar file. GUI leest de file (dit is lastiger dan je denkt, de file is vaak open tijdens lezen, je leest soms half afgebroken uitvoer: bv 3,1 ipv 3,1415...).
Hebben jullie (betere) ideeen, tips, ervaring?
Hoe doen bv virusscanners dat? Dan zie je ook vaak razendsnel de filenamen voorbijkomen die worden gescanned. Maar hoe weet de GUI welke file wordt gescanned?
Ik hanteer de eenvoudige regel: in de code voor berekeningen staat geen enkele verwijzing naar de GUI.
Voor de invoer is dat eenvoudig. Maar voor de uitvoer is het lastiger, omdat de berekeningen in een loop gebeuren en ik graag elke iteratie, dus realtime, mijn GUI wil updaten (bv de laatst berekende uitvoer aan een tabel of grafiek toevoegen).
Nu doe ik bijvoorbeeld:
code:
1
2
3
4
5
| Procedure DoeBerekeningen Loop 1000x waarde := Berekening(); FormOutput.Grafiek.Add(waarde). <=== OOPS End |
Dit werkt prima, maar de routine voor de berekeningen schrijft direct naar de GUI. Dat wil ik niet.
Om dit op te lossen dacht ik aan:
1. Zet een timer in je GUI, die om de zoveel tijd kijkt of er nieuwe data is.
2. Schrijf je data weg naar file. GUI leest de file (dit is lastiger dan je denkt, de file is vaak open tijdens lezen, je leest soms half afgebroken uitvoer: bv 3,1 ipv 3,1415...).
Hebben jullie (betere) ideeen, tips, ervaring?
Hoe doen bv virusscanners dat? Dan zie je ook vaak razendsnel de filenamen voorbijkomen die worden gescanned. Maar hoe weet de GUI welke file wordt gescanned?