mehrfaches Abarbeiten in einer schleife

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von prophet.

    mehrfaches Abarbeiten in einer schleife

    Hallo liebe vb-paradise community :)

    Tut mir leid für diesen komischen Threadtitel, mir ist nur leider kein besserer eingefallen und ich wusste auch keinen Begriff den ich für die sufu hätte nehmen können, so verzeiht mir den Thread bitte, wenn es ein passenden Thread schon gibt...

    Nun zu meinem Problem
    Ich habe in meinem Programm eine Schleife, die (stark gekürzt^^) wie folgt aussieht :

    VB.NET-Quellcode

    1. For i As Integer = 1 To Anzahl
    2. rufe so oft ein cmd fenster auf bis anzahl erreciht wurde
    3. Application.DoEvents()
    4. Next


    Diese ruft eine cmd auf die etwas abarbeitet.
    Nun möchte ich aber das die schleife so oft aufgerufen wird, wie vom benutzer engestellt:
    z.B.:
    Anzahl aufrufe 1 = nur ein cmd fenster zum abarbeiten erscheint
    Anzahl aufrufe 2= 2 cmd fenster zum abarbeiten erscheinen
    Anzahl aufrufe 3= 3 cmd fenster zum abarbeiten erscheinen

    Hoffe ihr versteht was ich meine und könnt mir helfen... Bekomme es einfach nicht hin :(

    Gruß
    prophet

    EDIT:
    Und wenn ein cmd fenster abgearbeitet wurde soll ein ein neues erscheinen und abarbeiten... etc.

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

    also meinst du das so?

    VB.NET-Quellcode

    1. For k As integer To benutzter anzahl
    2. For i As Integer = 1 To Anzahl
    3. rufe so oft ein cmd fenster auf bis anzahl erreciht wurde
    4. Application.DoEvents()
    5. Next
    6. Next


    aber abarbeitet er die schleife dann nicht nur durch bis k erreciht ist?
    Hoffe deine Frage richtig verstanden zu haben:

    VB.NET-Quellcode

    1. Dim Anzahl As Integer
    2. Anzahl = NumericUpDown.Value
    3. For i As Integer = 0 To Anzahl
    4. rufe so oft ein cmd fenster auf bis anzahl erreciht wurde
    5. Application.DoEvents()
    6. Next
    7. Next


    MFG
    habe bisle was vergessen zu sagen, mein fehler ^^

    Also die "Anzahl" wird aus nem array mit UBound geholt und ändert sich je nach Nutzer immer, kann aber nicht nachträglich verändert werden.
    Beim Programmstart soll der Benutzter dann in einer NumericUpDown die "benutzterAnzahl" auswählen können. Also wieviele cmd fenster das array abarbeiten sollen.
    Also zb. benutzterAnzahl = 3, dann sollen 3 cmd fenster erscheinen die den Index i des Array abarbeiten, also i = 1 / cmd fenster1, i = 2 / cmd fenster2, i = 3 / cmd fenster3, und wenn ein cmd fenster fertig ist, soll ein neues aufgerufen werden das dann i = 4 abarbeitet usw., aber es sollen dann maximal die 3 cmd fenster offen sein die der Benutzter am Anfang ausgewählt hat.

    Hoffe es ist jetzt etwas verständlicher was ich meine :)
    Der c64 funktioniert auch noch, warum verwendest du einen PC mit mehr Arbeitsspeicher als 64 k?!
    Disketten funktionieren auch noch, warum einen USB Stick verwenden?!

    Got it?^^
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    weil auf nem c64 leider kein Visual basic läuft, geschweige denn cod 6 ^^ Daraus folgt leider das mein laptop leider kein Disketten einschub besitzt ^^

    kann man aber trotzdem nicht mit Ubound vergleichen :D ^^

    Du verhleichst ja auch kein bobbycar mit nem auto ;)

    aber jetzt wird b2t pls

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

    prophet schrieb:


    VB.NET-Quellcode

    1. For i As Integer = 1 To Anzahl
    2. rufe so oft ein cmd fenster auf bis anzahl erreciht wurde
    3. Application.DoEvents()
    4. Next

    Nun möchte ich aber das die schleife so oft aufgerufen wird, wie vom benutzer engestellt:
    z.B.:
    Anzahl aufrufe 1 = nur ein cmd fenster zum abarbeiten erscheint
    Anzahl aufrufe 2= 2 cmd fenster zum abarbeiten erscheinen
    Anzahl aufrufe 3= 3 cmd fenster zum abarbeiten erscheinen

    Ich verstehe dein Problem nicht. Mir sieht die Schleife so aus, als ob sie genau macht, was du zu wünschen angibst.
    @ErfinderDesRades

    Tut sie auch teilweiße.
    Sie duchläuft es bis zum schluss und wartet beim application.DoEvents() immer bis das aktuelle cmd fenster geshclossen wird. Schön und gut aber ich will das mehrere cmd Fenster offen sind und die schleife abarbeiten. So wird immer genau 1 cmdfenster aufgerufen und abgewartet bis es fertig ist. Möchte aber das mehrere aufgerufen werden damit das ganze schneller von statten geht ;) und wenn ein cmd fenster fertig ist, soll sich ein neues öffnen, usw.

    @BugBeep

    habe es so probiert, und auf 3 eingestellt, aber geöffnet haben sich soviele wie das Array Groß war
    was genau meinst du mit blockiert den Thread?

    die exe des programms ruft die command.exe auf, und kann mehrfach geöffnet werden.
    ja muss sein sonst läuft die externe exe nicht

    also die schleife ruft die externe exe auf -> öffnet sich cmd fenster wo daten verarbeitet werden -> wenn fertig schließt es sich wieder
    was genau meinst du mit blockiert den Thread?

    Keine Ahnung wie ich es beschreibe soll aber ich versuch es mal xD

    Ein Thread ist wie ein Fluss, jetzt muss du dir eine aufgerufene Funktion/Sub mit z.B. einer Rechenaufgabe als ein Haufen dreck vorstellen.
    Dieser Haufen dreck im Fluss blockiert alles und muss erst abgetragen werden, damit der Fluss weiter fließen kann.

    Der ErfinderDesRades meint damit das dein aufruf der Command.exe den Thread blockiert (verstopft).

    Lol so ein blöde Metapher, mir muss da einer raus helfen :D


    Edit:

    Und mit "Muss das ühaupt sien, mitte Command.Exe?" meint er, ob du das was das CMD Fenster macht, nicht von deinem Programm machen lassen kannst!
    WAS macht dein CMD Fenster denn genau? Dateien Kopieren? Suchen? Löschen?

    Das könnte alles dein VB Programm selber!

    Gruß

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

    Also das mit dem blockieren, das tut doch Application.DoEvents() oder? wartet bis derprozess beendet ist und macht dann weiter.

    weder kopieren noch suchen oder löschen ^^
    möchte nicht genau sagen was die .exe macht, kann nur sagen das sie unterschiedlich viel zeit braucht je nach ArrayIndex ;) und das geht im Programm selbst nicht.

    aber das löst mein Problem trotzdem nicht ;) ^^

    denke man kann das ganze multithreading nennen oder so