Zweiter Thread startet nicht

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von hal2000.

    Zweiter Thread startet nicht

    Hi,
    Ich mal ein zwei Verschiedenen Threads. Das problem ist das immer nur der, der als erster gestartet wurden ist Malt. Ich habe es auch schon mit Backgroundworker'n versucht klappt aber leider nicht :(.
    Weiß einer was da zu tun ist?
    MFg
    Mike
    Hi,
    Also wie ich die Threads erstelle darfst du ruhig sehen XD:

    VB.NET-Quellcode

    1. Dim Down As new Threading.thread(Addressof LedDown)
    2. Dim Up As new Threading.thread(Addressof LedUp)
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. Down.Start()
    5. Up.Start()
    6. End Sub

    An meinen Code sollte das problem nicht liegen^^
    Mfg
    Mike
    Also ich habe mir gerade schnell mal damit ein BSP gecoded.

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim Down As New Threading.Thread(AddressOf LedDown)
    3. Dim Up As New Threading.Thread(AddressOf LedUp)
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. CheckForIllegalCrossThreadCalls = False
    6. Down.Start()
    7. Up.Start()
    8. End Sub
    9. Sub leddown()
    10. Dim Zahl As Integer = 0
    11. Do
    12. Zahl += 1
    13. Threading.Thread.Sleep(500)
    14. TextBox2.Text = Zahl.ToString
    15. Loop
    16. End Sub
    17. Sub ledup()
    18. Dim Zahl As Integer = 0
    19. Do
    20. Zahl += 1
    21. Threading.Thread.Sleep(500)
    22. TextBox1.Text = Zahl.ToString
    23. Loop
    24. End Sub
    25. End Class



    ...und es gibt keine Probleme. In beiden Texboxen wird brav hochgezählt :P
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Mh .... mein Malvorgang klappt aber zu 150%.
    PS: CheckforillegalcrossThreadcalls funktioniert nur im Debugger. :rolleyes:

    @SAR-71
    Nichts.

    Achso: Es lagt aber am Anfang wo der 2te Thread gestartet werden sollte.
    mfg
    Mike

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Load-soft.ch.vu schrieb:

    PS: CheckforillegalcrossThreadcalls funktioniert nur im Debugger. :rolleyes:
    Also bei mir geht es auch wenn es nicht im Debug ist...
    Aber so erkenne ich zumindest keinen Fehler.
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Hi,
    Ja -.- du musst das Projekt ja auch erstellen oder klickst du immer nur auf Debuggen und ziehst die Anwendung ausm Debug Ordner?
    Hier für dich:
    [VB.NET] Form kontrol komplett threadsicher machen?
    msdn.microsoft.com/de-de/libra…egalcrossthreadcalls.aspx

    Mfg
    Mike

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Nein, ich klicke auf Erstellen, und nehme die Datei aus dem Release Ordner...

    VB.NET-Quellcode

    1. CheckForIllegalCrossThreadCalls = False

    Das zeugt von Unfähigkeit, Threads zu synchronisieren.

    Der Code zum Start der Threads ist in Ordnung - der Fehler muss in den Methoden LedDown und LedUp liegen. Sie erzeugen wahrscheinlich eine unbehandelte Ausnahme oder werden von außen unterbrochen, was ebenfalls eine Ausnahme zur Folge hat. Anbei sei gesagt, dass Ausnahmen in Threads z.T. nicht durch die IDE abgefangen werden (können), wenn gewisse Bedingungen erfüllt sind. In Multithreadumgebungen können schwer lokalisierbare Fehler entstehen, da hier mehrere Ausführungsstränge parallel zum Zuge kommen und der Programmierer sowohl deren Ablauf als auch die Interaktionen mit gemeinsamen Daten im Auge behalten muss. Hierbei entstehen (oft ungewollt) sehr leicht Racebedingungen. Wenn der Programmierer allzu leichtfertig ist, produziert er sogar Deadlocks, was die Anwendung zum Absturz bringt.
    Gruß
    hal2000

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „hal2000“ () aus folgendem Grund: Ergänzungen