Suche Verbesserung für Code!

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Suche Verbesserung für Code!

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim TmpProc As New Process
    3. WithEvents TmpTimer As New Timer
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. With TmpProc
    6. .StartInfo.WindowStyle = ProcessWindowStyle.Hidden
    7. .StartInfo.FileName = TextBox1.Text
    8. .Start()
    9. End With TmpProc.Start()
    10. TmpTimer.Interval = 1000
    11. TmpTimer.Start()
    12. End Sub
    13. Private Sub TmpTimer_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles TmpTimer.Tick
    14. Static tmpCounter As Integer = 0
    15. tmpCounter += 1
    16. If tmpCounter = 10 Then
    17. If TmpProc.HasExited = False Then
    18. TmpProc.CloseMainWindow()
    19. End If
    20. TmpTimer.Stop()
    21. End If
    22. End Sub
    23. End Class

    So weit, so gut.
    Aber jetzt möchte ich mehrere Prozesse auf einmal starten.
    Ich habe schon versucht, ein par .Start() dran zu hängen.
    Aber dann kommt da der Fehler, mit dem Motto: "InvalidOperationException wurde nicht behandelt."

    VB.NET-Quellcode

    1. If TmpProc.HasExited = False Then

    Kann mir da jemand weiterhelfen?
    Danke! =)
    Leider muss ich dazu sagen, dass mir jetzt 2 Fehler aufgefallen sind.
    1. Es wird bei einem Button-Klick 2 Fenster geöffnet, wenn man nur einen Process-Objekt hat.
    (Bei 2 Process-Objekte wird das Fenster 3-mal geöffnet!?)
    2. Wenn man z.B. "http://www.youtube.com/" eingibt, wird der Link geöffnet aber das Fenster wird nicht geschlossen.
    Da kommt wieder der Fehler bei "If TmpProc.HasExited = False Then"


    Kann mir da jemand helfen?
    Mache folgende Änderung:

    VB.NET-Quellcode

    1. Private tmpCounter As Integer = 0 ' aus dem Timer_Tick raus
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. tmpCounter = 0
    4. ' ...
    5. End Sub

    Mit dem Notepad klappt das sehr gut.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!