Archief - VB.NET: Loops stoppen / pauzeren

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Freakshow

Legacy Member
Yow

Stel dat je volgende loop laat runnen:
Code:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i As Integer = 0
        Do While i <= 1000000
            TextBox1.Text = i.ToString
            Me.Update()
            i += 1
        Loop
    End Sub
Hoe kan ik met een 2e knop deze loop gaan stoppen of pauzeren wanneer ik wil? Anders gezegt, hoe kan ik checken tijdens een loop als Button2 indegrukt is?

Simpele vraag denk ik, maar kweet begot het antwoord ni :(

Cakeman

Legacy Member
Het lijkt mij het simpelste om met een timer te werken die elke seconde de getallen in de textbox gaat zetten. Via knoppen kan je de timer dan enabled en disablen.

Freakshow

Legacy Member
Cakeman zei:
Het lijkt mij het simpelste om met een timer te werken die elke seconde de getallen in de textbox gaat zetten. Via knoppen kan je de timer dan enabled en disablen.
timer is geen optie, in realiteit wordt der in die loop een redelijk zwaar algoritme uitgevoerd die echt lang kan gaan duren (nu runt ie al een goeie 15 min). Die code was maar als voorbeeld...
En kwil een optie voorzien da ge het ff kunt pauzeren aangezien de CPU load tijdens die loop naar zen max gaat...

Cakeman

Legacy Member
Freakshow zei:
timer is geen optie, in realiteit wordt der in die loop een redelijk zwaar algoritme uitgevoerd die echt lang kan gaan duren (nu runt ie al een goeie 15 min). Die code was maar als voorbeeld...
En kwil een optie voorzien da ge het ff kunt pauzeren aangezien de CPU load tijdens die loop naar zen max gaat...
Om de hoeveel tijd moet dat algoritme uitgevoerd worden?

Wanneer je iets zoals hieronder in je Timer procedure zet, dan ondervind je geen last aan je timer
Code:
Timer.Enabled = false;
...
Algoritme();
Timer.Enabled = true;

Als je je timer interval nu op 100 milliseconden ofzo zet, dan voert hij het algoritme mooi na mekaar uit.

De logica is de volgende:
De Timer wordt met een druk op een knop gestart. Hij zet zichzelf op disabled om ervoor te zorgen dat de intervaltijd niet opnieuw getriggerd zal worden tijdens je algoritme. Na het algoritme zet hij zichzelf op enabled. 100 milliseconden na het enablen, begint alles weer van vooraf aan.

Dit is een techniek die in de praktijk vaak gebruikt wordt.

Het is trouwens een goede gewoonte om in een timer procedure ervoor te zorgen dat de timer zich aan het begin op disabled zet en aan het einde weer op enabled zet.

Edit: wat voer je dan uit dat 15 minuten duurt? Als ik dat mag vragen tenminste :)

m3rlin

Legacy Member
steek u loop in een aparte thread en behandel alle andere operaties dan naar die thread toe.


Ik ben ook wel benieuwd naar wat er 15 minuten duurt :)

Freakshow

Legacy Member
I know,
maar met nen timer duurt het massas lang. Het algoritme op zich vraagt ni veel tijd, maar tis gewoon het aantal keren dat het moet uitgevoerd worden die voor de load zorgt.

Da algoritme is gewoon een "berekening" van iets ;)

Silenger.BE

Legacy Member
Ik hoop voor jouw dat VB.NET thread support heeft...
Thread = oplossing / CreateThread -> SuspendThread -> ResumeThread...

Cakeman

Legacy Member
Freakshow zei:
I know,
maar met nen timer duurt het massas lang. Het algoritme op zich vraagt ni veel tijd, maar tis gewoon het aantal keren dat het moet uitgevoerd worden die voor de load zorgt.

Da algoritme is gewoon een "berekening" van iets ;)
Een timer duurt maar net zo lang als het interval.

Threads lijken me te ver gezocht voor een algoritme dat betrekkelijk simpel is.

m3rlin

Legacy Member
alle antwoorden lezen mag ze...

En uiteraard heeft vb.NET thread "support"
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan