VB 2017: Draadjes (Threads)

Status
Niet open voor verdere reacties.

icelandic

Gebruiker
Lid geworden
22 sep 2014
Berichten
122
In verband met het maken van een (veel) groter programma én het leren programmeren in VB 2017, heb ik eerst maar eens een demo'tje gemaakt m.b.t. z.g. THREADING.
Onderstaande demo, geeft telkens weer een foutmelding: System.InvalidOperationException. Het komt er op neer dat het systeem zegt dat ik "draadjes" door elkaar haal.
Ik weet zeker dat ik dat niet doe!:evil:

Ik heb gekeken bij Microsoft m.b.t. deze foutmelding maar zij doen daar nogal wollig over... Ik begrijp dit niet, ik zie ook nergens een éénduidige oplossing...

Hier is het programmaatje:

PHP:
 Public Class Form1
    Dim Getal1 As Integer
    Dim Getal2 As Integer
    Dim Thread1 As System.Threading.Thread
    Dim Thread2 As System.Threading.Thread

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Thread1 = New System.Threading.Thread(AddressOf Telop)
        Thread1.Start()
    End Sub

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Thread2 = New System.Threading.Thread(AddressOf Telaf)
        Thread2.Start()
    End Sub

    Private Sub Telop()
        Do Until Getal1 = 1000
            Getal1 = Getal1 + 1
            Label1.Text = Getal1
            'Me.refresh
        Loop
    End Sub 'Telop

    Private Sub Telaf()
        Getal2 = 1000
        Do Until Getal2 = 0
            Getal2 = Getal2 - 1
            Label2.Text = Getal2
            'Me.refresh
        Loop
    End Sub 'Telaf

End Class

Het valt me op dat de foutmelding altijd geplaatst wordt op het moment dat het programma bij Label1.Text of Label2.Text is. Dit vind ik ook zo'n onbegrijpelijk moment...


Kan iemand hier iets over zeggen?

Vriendelijke groet,
Eric
 
Found it!

Tóch ergens op internet gevonden...
Toegevoegd aan mijn test-programmaatje:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.CheckForIllegalCrossThreadCalls = False
End Sub

Ik meen dat ik gelezen heb dat nádat het programma dit gelezen heeft, het verder gaat als VB2013. Ik concludeer hieruit dat er voor VB2017 geen oplossing is.
Of zie ik het H E LE M A A L verkeerd?

Het is toch een beetje wonderlijk dat een check voor een z.g. fout uitgeschakeld moet worden? Dan is de check op zich al verkeerd gedaan?
Iemand een inhoudelijke mening??

Eric
 
Laatst bewerkt:
Iemand een inhoudelijke mening??
Volgens mij sla je heel veel hoofdstukken over in het leren programmeren.
Of je hebt een hele steile leercurve, van "fruitmachine" naar "groot programma" in 1 week.
Regelt windows niet voor jou dat elk programma voldoende aandacht krijgt.
De processors zijn nu zo snel dat ik me niet kan voorstellen dat een programma onvoldoende aandacht krijgt.
Tenzij je een game gaat maken waar beeld en geluid gelijk moeten lopen.
 
Laatst bewerkt:
@ alphamax:

Dank voor je bericht!
Steile leercurve: nou dat bepaald niet, maar ik ben zeer bekend met vb6.0. Daar heb ik zo'n 20 jaar geleden eens een schaakprogramma in geschreven.

Nu, om te voorkomen dat ik de komende winter in het café jenever zit te zuipen of wéér een ander schaakprogramma ga schrijven, dacht ik: "och een mooie slotmachine met écht drie draaiende wielen (met plaatjes die echt naar beneden draaien) en meer flitsend gerinkeldekinkel, dat lijkt me ook wel leuk!"

Ik kwam er achter dat VB6 niet in staat is om meerdere taken gelijktijdig uit te voeren, dus kwam ik uit op een nieuwe VB-taal en dat moet dan maar VB2017 zijn. Waarom een andere??

Nu kom ik dus allerlei andere nieuwe dingen tegen waar ik niet onmiddellijk een oplossing voor weet, dus vraag ik het maar bij H E L P M IJ :d , mijn buren helpen me niet!
VB2017 is echt wel anders dan VB6.0 , ik moet dus weer veel leren. Ik moest b.v. leren hoe ik verschillende THREADS moest maken. Dat weet ik nu dus. En er zal nog wel meer komen! Al dat gedeclareer!

Ben ik nog wel welkom??

Eric

P.S. Geen antwoord op mijn opmerking m.b.t. System.InvalidOperationException (zie boven)
 
Laatst bewerkt:
Ben ik nog wel welkom??

Eric

P.S. Geen antwoord op mijn opmerking m.b.t. System.InvalidOperationException (zie boven)

Wat mij betreft wel, met VB6 zou ik je nog wel kunnen helpen, maar met VS/VB2013 en VS/VB2017 niet.
Daarbij blijf ik van mening dat je een slotmachine met beeld en geluid kan maken in VB6 met 1 thread. (misschien moet ik die dan ook maar eens programmeren)
 
@Alphamax:

Bedankt voor je bericht.

Een slotmachine in VB6.0, ik ben zéér benieuwd!

Bedenk dat je drie wielen met plaatjes onafhankelijk van elkaar moet laten draaien! het linker wiel draait minder lang dan de andere enz.
Elk wiel moet de plaatjes naar beneden laten draaien (althans: beweging suggereren)

Vriendelijke groet,
Eric
 
Ronduit: GEWELDIG!

Men kan zelfs de code ervan downloaden. Ik heb dat tot nu toe niet gedaan want ik vrees dat er een enorme hoeveelheid code loskomt.
Maar het stimuleert mij wél om toch te proberen verder te gaan met "mijn" slotmachine! Het blijkt dat het wél kan in VB6.0! :thumb:

Bedankt voor de link!

Eric
 
Intussen:

Het is mij gelukt om toch drie wielen aan het draaien te krijgen.... in Vb6!

Ik heb mijn prestatie even vergeleken met die van die link die je me gestuurd hebt. Die van mij werkt, maar de slotmachine van de link is beduidend mooier, je ziet de plaatjes mooier draaien.

Ik ga de tóch zijn listing bekijken...

Eric
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan