In einem anderen jetzt schon sehr langen und unübersichtlichen Thema wird ein Programm von mir bearbeitet.
Habe ich ein kleineres Problem mit einem Timer, welches sich getrennt vom Rest besprechen lässt:
Die Klasse Testklasse soll ein größeres Programm simulieren in dem drei zeitraubende Aufgaben abgearbeitet werden sollen, ohne dass das Programm hängenbleiben darf:
Button 1
Hier wird einfach nur der Timer getestet. Hier funktioniert scheinbar alles.
Button 2
Hier wird das größere Programm simuliert und da bleibt der Timer an der markierten Stelle hängen:
Die einzelnen Schritte:
1. Notepad starten und warten bis es geschlossen wird
2. Eine Sekunde warten -->> Das Warten der einen Sekunde funktioniert nicht.
3. Notepad starten und warten bis es geschlossen wird
Wo kann der Fehler liegen? Rufe ich die Klasse oder den Timer falsch auf?
Habe ich ein kleineres Problem mit einem Timer, welches sich getrennt vom Rest besprechen lässt:
Die Klasse Testklasse soll ein größeres Programm simulieren in dem drei zeitraubende Aufgaben abgearbeitet werden sollen, ohne dass das Programm hängenbleiben darf:
Button 1
Hier wird einfach nur der Timer getestet. Hier funktioniert scheinbar alles.
Button 2
Hier wird das größere Programm simuliert und da bleibt der Timer an der markierten Stelle hängen:
Die einzelnen Schritte:
1. Notepad starten und warten bis es geschlossen wird
2. Eine Sekunde warten -->> Das Warten der einen Sekunde funktioniert nicht.
3. Notepad starten und warten bis es geschlossen wird
VB.NET-Quellcode
VB.NET-Quellcode
- Public Class Testklasse
- Private WithEvents prc As Process
- Private WithEvents mytimer As Timer
- Private Reihenfolge_index As New Queue(Of Integer)
- Private Reihenfolge_info As New Queue(Of String)
- Public Sub start_queue()
- 'Queue füllen
- For i = 0 To 2
- Reihenfolge_index.Enqueue(i)
- Next
- Reihenfolge_info.Enqueue("eins")
- Reihenfolge_info.Enqueue("zwei")
- Reihenfolge_info.Enqueue("drei")
- timertest() 'Hier funktioniert der Timertest
- End Sub
- Public Sub Ablaufsteuerung()
- If Reihenfolge_index.Count > 0 Then
- Select Case Reihenfolge_index.Dequeue()
- Case 0
- Console.Beep(1500, 200)
- prc = New Process
- prc.StartInfo.FileName = "notepad.exe"
- prc.EnableRaisingEvents = True
- prc.Start()
- Console.WriteLine(Reihenfolge_info.Dequeue())
- Case 1
- timertest() 'Hier funktioniert der Timertest nicht !!!!!!!!!!!!!!!!!!!!!
- Console.WriteLine(Reihenfolge_info.Dequeue())
- Case 2
- prc = New Process
- prc.StartInfo.FileName = "notepad.exe"
- prc.EnableRaisingEvents = True
- prc.Start()
- Console.WriteLine(Reihenfolge_info.Dequeue())
- Case Else
- Console.WriteLine("error")
- End Select
- End If
- End Sub
- Private Sub Timer_exit(sender As Object, e As EventArgs) Handles mytimer.Tick
- mytimer.Stop()
- Console.Beep(100, 200)
- Ablaufsteuerung()
- End Sub
- Private Sub prc_exit(sender As Object, e As EventArgs) Handles prc.Exited
- Ablaufsteuerung()
- End Sub
- Public Sub timertest()
- Console.Beep(500, 200)
- mytimer = New Timer
- mytimer.Interval = 1000
- mytimer.Start()
- End Sub
- End Class
Wo kann der Fehler liegen? Rufe ich die Klasse oder den Timer falsch auf?