Veröffentlicht 7. Dezember 200519 j 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
7. Dezember 200519 j 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
7. Dezember 200519 j 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 !
7. Dezember 200519 j Lass die Aktion in einem eigenen Thread laufen, die anderen genannten Moeglichkeiten solltest du bitte schnellstmoeglichst vergessen.
8. Dezember 200519 j 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
8. Dezember 200519 j 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
8. Dezember 200519 j 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.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.