Reality Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 Hi, ist es möglich ein c#-Programm so lange anzuhalten bis ein batch-file abgearbeitet ist? Das wäre für mich nämlich sehr wichtig, da ich mehrere batch-files hintereinander ausführen lasse und diese aber auf die gleichen dateien zugreifen müssen. Wer kann mir helfen? Mfg, Reality
IT-Hawk Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 Hi, ich mach zwar nicht in C# aber normalerweise löst man das so: Möglichkeit 1 Du erzeugst mit der .bat ein Ereigniss: z.B. Erstellung der Datei: fertig.txt Eine geteimte Schleife in C# fragt alle Sekunde danach ab. Danach löschen der Datei fertig.bat und das Programm darf weiter laufen. Möglichkeit 2 Geht nur bei kleinen .bat Ereignissen, also nicht bei Dateitransfer der unbekannt groß ist. Du aktivierst eine Zeitschleife und definierst, das nach Aktivierung der .bat z.B. 2 Sekunden zu warten ist. Dies ist nicht gallant aber einfach. Ich hoffe, ich konnte helfen. Hawk
yahoo Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 Hallo Vielleicht ist Process.WaitForExit das was du brauchst.... HTH Yahoo
Reality Geschrieben 7. Dezember 2005 Autor Geschrieben 7. Dezember 2005 da hält aber nur der prozess (Batch-File) , den ich aufgerufen habe an
baba007 Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 IT-Halk : lösch lieber die Möglichkeit 2, sonst gibts für jeden, der das bei der Arbeit macht mächtig haue. Das ist eine nicht zu akzeptierende Wahl !
DennyB Geschrieben 7. Dezember 2005 Geschrieben 7. Dezember 2005 Lass die Aktion in einem eigenen Thread laufen, die anderen genannten Moeglichkeiten solltest du bitte schnellstmoeglichst vergessen.
Reality Geschrieben 8. Dezember 2005 Autor Geschrieben 8. Dezember 2005 Was heißt in einem eigenen Thread?
yahoo Geschrieben 8. Dezember 2005 Geschrieben 8. Dezember 2005 Hallo, ich hatte das so angedacht: Mit dem Process-Objekt das Batch-File starten und dann die Option festlegen. Dann wird die Verarbeitung angehalten, bis sich das Batch beendet. Hab das mal so gemacht, hat funktuniert. (Leider habe ich keinen Code hier) Mit Threads? Da muss man sich doch dann "manuell" drum kümmern, ob die fertig sind, oder wie meinst du das Denny? Gruß Yahoo
Reality Geschrieben 8. Dezember 2005 Autor Geschrieben 8. Dezember 2005 Was für eine Option meinst du denn jetzt?
yahoo Geschrieben 8. Dezember 2005 Geschrieben 8. Dezember 2005 Hallo, sorry, "Option festlegen" war blöd formuliert. Versuche Process p = System.Diagnostics.Process.Start(batch); p.WaitForExit (); zusätzlich kann man den Stati abfragen: p.HasExited So hätte ich das angedacht... Yahoo
DennyB Geschrieben 8. Dezember 2005 Geschrieben 8. Dezember 2005 Warum manuell drum kuemmern? Man kann den aufgerufenen Thread den aktuellen joinen lassen. System.Threading.Thread t = new System.Threading.Thread(new System.Threading.ThreadStart(lala)); t.Start(); t.Join(); Natuerlich muss man dabei ueberpruefen, ob die Batch fertig ist.
yahoo Geschrieben 9. Dezember 2005 Geschrieben 9. Dezember 2005 Hi Denny, stimmt, so geht's auch. So denn, Yahoo
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden