Laden...

Wie kann ich einen Prozess pausieren?

Erstellt von demo vor 18 Jahren Letzter Beitrag vor 3 Jahren 2.672 Views
D
demo Themenstarter:in
12 Beiträge seit 2004
vor 18 Jahren
Wie kann ich einen Prozess pausieren?

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:

Z
16 Beiträge seit 2005
vor 18 Jahren

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

D
demo Themenstarter:in
12 Beiträge seit 2004
vor 18 Jahren

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:

S
8.746 Beiträge seit 2005
vor 18 Jahren

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".

49.485 Beiträge seit 2005
vor 18 Jahren

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

D
demo Themenstarter:in
12 Beiträge seit 2004
vor 18 Jahren

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:

M
33 Beiträge seit 2008
vor 3 Jahren

schon was her, das hier beschrieben wurde, aber ich habe eine ähnliche Frage. Im Ressourcen-Monitor gibt es mit einem "Rechtsklick" auf einen Prozess die Möglichkeit, diesen zu "pausieren" (nicht Kill!) und auch danach diesen wieder fortzuführen. Diese Funktion würde ich gerne in ein eigenes Programm einbauen. Ziel: prüfen, ob ein Prozess läuft. Wenn Ja, diesen für einen einstellbaren Zeitraum (alle 10 Minuten) zu unterrechen und nach einem weiteren Zeitraum (15 Sekunden) fort zuführen. das in einer kleinen GUI-Exe, in der ich die 2 Zeiten einstellen kann. Mir fehlt die Idee (das Wissen) wie ich diese Pause auslöse. Wenn nein: Melden, das der Prozess nicht da ist und Nichts machen.

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

H
48 Beiträge seit 2020
vor 3 Jahren

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