Ik heb een programma dat CRC's uitrekent van bestanden.
Omdat de hele GUI van het programma hing tijdens het rekenen, wil ik gaan overstappen naar threads.
Ik heb allerlei artikels en guides gevonden op Google, dus ik weet inmiddels wel hoe het ongeveer werkt, maar ik kan alleen niet vinden hoe ik stukken code netjes achter elkaar kan laten uitvoeren?
Eigenlijk zoiets als dit:
Let op dat dit slechts pseudocode is, maar ik wil dus gewoon door items heenlopen, van de eerste de CRC uitrekenen en deze dan verwijderen. Dit wil ik doen zolang er items zijn (zolang er een item 0 is). (Natuurlijk komen hier nog fancy dingen omheen zoals progress bars enzo, vandaar de winforms, maar dat is voor het probleem (denk ik) niet van belang.)
Nu heb ik de "background worker" gevonden en ook enkele artikels hierover gevonden, maar als ik deze in een while gebruik krijg ik de melding dat ik pas weer iets met het background worker-object kan doen als deze klaar is (hij wacht dus helemaal niet tot 'ie klaar is...).
Nu heb ik de ThreadPool gevonden, hiermee kan je dus een queue maken van opdrachten die uitgevoerd moeten worden, dus ik netjes in die while dingen toevoegen aan de queue, maar nou zijn de opdrachten door elkaar klaar.
Ik doe bijv. opdracht 1, 2, 3, 4, 5, 6, 7 en 8 toevoegen en de volgorde waarin ze klaar zijn is bijv. 1, 2, 4, 5, 6, 3, 8, 7 (ofzo).
Ik zit dus eigenlijk een beetje vast, ik kan niks meer bedenken wat een beetje structuur brengt in het threaden enzo... Ik zou graag een schopje in de goede richting krijgen van iemand, bijv. een helder artikel waarin *meerdere* threads achter elkaar worden uitgevoerd (en waarbij ook wordt gewacht tot de vorige thread klaar is) (wat ik vind op Google is 1 enkele opdracht die veel tijd inneemt op de achtergrond draaien).
Alvast bedankt voor de replies.
Omdat de hele GUI van het programma hing tijdens het rekenen, wil ik gaan overstappen naar threads.
Ik heb allerlei artikels en guides gevonden op Google, dus ik weet inmiddels wel hoe het ongeveer werkt, maar ik kan alleen niet vinden hoe ik stukken code netjes achter elkaar kan laten uitvoeren?
Eigenlijk zoiets als dit:
C#:
1
2
3
4
5
| while (itemExists(0)) { Console.WriteLine("Calculated CRC of " + items[0].File + ": " + CalculateCRC(items[0].File)); items.Remove(0); } |
Let op dat dit slechts pseudocode is, maar ik wil dus gewoon door items heenlopen, van de eerste de CRC uitrekenen en deze dan verwijderen. Dit wil ik doen zolang er items zijn (zolang er een item 0 is). (Natuurlijk komen hier nog fancy dingen omheen zoals progress bars enzo, vandaar de winforms, maar dat is voor het probleem (denk ik) niet van belang.)
Nu heb ik de "background worker" gevonden en ook enkele artikels hierover gevonden, maar als ik deze in een while gebruik krijg ik de melding dat ik pas weer iets met het background worker-object kan doen als deze klaar is (hij wacht dus helemaal niet tot 'ie klaar is...).
Nu heb ik de ThreadPool gevonden, hiermee kan je dus een queue maken van opdrachten die uitgevoerd moeten worden, dus ik netjes in die while dingen toevoegen aan de queue, maar nou zijn de opdrachten door elkaar klaar.
Ik doe bijv. opdracht 1, 2, 3, 4, 5, 6, 7 en 8 toevoegen en de volgorde waarin ze klaar zijn is bijv. 1, 2, 4, 5, 6, 3, 8, 7 (ofzo).
Ik zit dus eigenlijk een beetje vast, ik kan niks meer bedenken wat een beetje structuur brengt in het threaden enzo... Ik zou graag een schopje in de goede richting krijgen van iemand, bijv. een helder artikel waarin *meerdere* threads achter elkaar worden uitgevoerd (en waarbij ook wordt gewacht tot de vorige thread klaar is) (wat ik vind op Google is 1 enkele opdracht die veel tijd inneemt op de achtergrond draaien).
Alvast bedankt voor de replies.
PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?