Dereee!
Ich brauche für mein Programm eine Pausefunktion für einen Vorgang.
Dieser Vorgang ist ein Prozess - also irgendein Programm -, den ich aus
meinem Programm starte (kein Thread!!!).
Gibt es eine Möglichkeit diesen Prozess schlafen zu legen, wenn ja wie?
Danke im Voraus!
mfg demo
Ich kam, sah und implementierte. :evil:
Hmm warum willst du den Prozess den du aus C# startest
oder willst du dein C# Programm stillegen bis der Prozess beendet ist ?
Mfg
Brami
Nein, ich will nicht warten, bis er beendet ist!
Ich benutze ein Komprimierungsprogramm und möchte den Vorgang der Kompression mittels Button pausieren lassen.
Und das ist nunmal ein fremdes Programm!
Ich kam, sah und implementierte. :evil:
Vom BS gibt es meines Wissens keine Funktion um einen Prozess pausieren zu lassen. Ein wirkungsvoller Weg sollte aber sein, die Prozesspriorität soweit nach unten zu setzen, bis das Programm praktisch nicht mehr drankommt (bz.w nur wenn sonst gar nix im System passiert). Echtes "Anhalten" ist das aber nicht.
Zumindest ist aber das System wieder "schnell".
Hallo demo,
ich denke auch, dass zuverlässig anhalten nicht geht. Wenn das Kompressionsprogramm ein Kommandozeilenprogramm ist, könntest du Ein- und Ausgabe zu dir umleiten (.RedirectStandardInput/Output) und dann versuchen, die Ausgabe anzuhalten, wie das auf der Kommandozeile geht (Strg+S) oder die Ausgabe einfach nicht lesen. Das hält den Prozess auch nicht direkt an, aber irgendwann blockiert dann (hoffentlich) eine Ausgabefunktion des Prozesses, woraufhin er wirklich stoppt.
herbivore
mhm schade!
jo gut ich verwende die rar.exe also konsolenprogramm
und soviel ausgabe hat das ding auch nicht, als dass sich das programm
selbst sperrt.
mhm blöd
danke trotzdem
Ich kam, sah und implementierte. :evil:
Wenn ich das aber richtig verstanden habe, gibt es (im Gegensatz zu "Kill") diese Art der "Pause" für einen Prozess nicht in c#?
--
Mit freundlichen Grüßen,
Matthias Lach
c# ist keine runtime sondern eine programmiersprache du solltest daher schauen wie die windows API dafür ist und kannst diese dann mit c# ansprechen.
c# ist behandelt die windows api nur wie ein wrapper aber manche dinge muss man selbst wrappen.
das prozess pausieren ist in echt aber kein prozess pausieren sondern einen snapshot machen und dann den prozess wieder mit dem snapshot starten. das heisst du wirst aus der applikation selbst keine chance haben den eigenen prozess der anwendung wieder zu starten
Schau mal in How to pause or resume a process with c# (effektiv werden damit alle Threads des Prozesses angehalten bzw. fortgesetzt).