ReDim bei System.Diagnostics.Process

  • VB.NET

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

    ReDim bei System.Diagnostics.Process

    Hallo,

    ich habe

    VB.NET-Quellcode

    1. Private Programm(0) As System.Diagnostics.Process
    2. Private Sub Wichtige_Dateien_Starten()
    3. Dim DokuZähler As Integer
    4. Dim Liste As DataSet = DokumentenDataSet
    5. DokuZähler = Liste.Tables(0).Rows.Count - 1
    6. For x = 0 To DokuZähler
    7. If DokumentenDataSet.Tables(0).Rows(x).Item(2) And Stundenplaner.ChkbZettelbearbeiten.Checked = True Then
    8. 'Programm(ProgrammZähler).windowstyle = ProcessWindowStyle.Minimized
    9. Programm(ProgrammZähler) = Process.Start(DokumentenDataSet.Tables(0).Rows(x).Item(1))
    10. ProgrammZähler += 1
    11. ReDim Programm(ProgrammZähler)
    12. End If
    13. Next
    14. End Sub
    15. Private Sub Wichtige_Programme_Beenden()
    16. For x = 0 To ProgrammZähler
    17. Try
    18. Programm(x).CloseMainWindow()
    19. Catch ex As Exception
    20. End Try
    21. ProgrammZähler = 0
    22. Next
    23. End Sub


    Jetzt wird keines der geöffneten Programme geschlossen.

    Wenn ich "Private Programm(0) As System.Diagnostics.Process" auf "Private Programm(10) As System.Diagnostics.Process" setze und " ReDim Programm(ProgrammZähler)" rausnehme, dann schließen sich auch die aufgerufenen Programme.

    Letztendlich würde mir das schon reichen. Aber ich würde gerne wissen, warum das ReDim Ärger verursacht und wie man ihn umgehen kann. Ich habe zuerst darauf getippt, dass es so etwas wie RePrivate geben müsste, aber derartiges nicht gefunden.

    Viele Grüße
    Stephan
    Mach es etwa so:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Programm As New List(Of System.Diagnostics.Process)
    3. Private ProgrammZähler As Integer = 0
    4. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    5. Dim DokuZähler As Integer = 0
    6. Dim pr As New System.Diagnostics.Process
    7. 'Dim Liste As DataSet = DokumentenDataSet
    8. 'DokuZähler = Liste.Tables(0).Rows.Count - 1
    9. For x = 0 To DokuZähler
    10. 'If DokumentenDataSet.Tables(0).Rows(x).Item(2) And Stundenplaner.ChkbZettelbearbeiten.Checked = True Then
    11. 'Programm(ProgrammZähler).windowstyle = ProcessWindowStyle.Minimized
    12. 'pr = Process.Start(DokumentenDataSet.Tables(0).Rows(x).Item(1))
    13. pr = Process.Start("Notepad.exe")
    14. ProgrammZähler += 1
    15. Programm.Add(pr)
    16. 'End If
    17. Next
    18. End Sub
    19. Private Sub Wichtige_Programme_Beenden()
    20. For x = 0 To ProgrammZähler - 1
    21. Programm(x).CloseMainWindow()
    22. Next
    23. Programm.Clear()
    24. ProgrammZähler = 0
    25. End Sub
    26. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    27. Wichtige_Programme_Beenden()
    28. End Sub
    29. End Class
    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!