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
Darf man mal Code sehen
Weil so pauschal kann ich da nichts sagen.
Hi,
Also wie ich die Threads erstelle darfst du ruhig sehen XD:
VB.NET-Quellcode
Dim Down Asnew Threading.thread(Addressof LedDown)
Dim Up Asnew Threading.thread(Addressof LedUp)
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
Down.Start()
Up.Start()
EndSub
An meinen Code sollte das problem nicht liegen^^
Mfg
Mike
Was heißt er startet nicht?
Gibts ne Fehlermeldung o.ä.?
Mfg.
SAR
Also ich habe mir gerade schnell mal damit ein BSP gecoded.
VB.NET-Quellcode
PublicClass Form1
Dim Down AsNew Threading.Thread(AddressOf LedDown)
Dim Up AsNew Threading.Thread(AddressOf LedUp)
PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
CheckForIllegalCrossThreadCalls =False
Down.Start()
Up.Start()
EndSub
Sub leddown()
Dim Zahl AsInteger=0
Do
Zahl +=1
Threading.Thread.Sleep(500)
TextBox2.Text = Zahl.ToString
Loop
EndSub
Sub ledup()
Dim Zahl AsInteger=0
Do
Zahl +=1
Threading.Thread.Sleep(500)
TextBox1.Text = Zahl.ToString
Loop
EndSub
EndClass
...und es gibt keine Probleme. In beiden Texboxen wird brav hochgezählt
Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed
Mh .... mein Malvorgang klappt aber zu 150%.
PS: CheckforillegalcrossThreadcalls funktioniert nur im Debugger.
@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“ ()
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()
Nein, ich klicke auf Erstellen, und nehme die Datei aus dem Release Ordner...
Bei funzt das ganze auch (Unabhänig davon ob es im Debbuger ist oder man die ausm Release-Ordner nimmt)
Alles nochmal zu Sicherheit getestet -> Keine Probleme
Mfg.
SAR
VB.NET-Quellcode
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