Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Wie kann ich einen Prozess pausieren?
demo
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Österreich

Themenstarter:

Wie kann ich einen Prozess pausieren?

beantworten | zitieren | melden

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:
private Nachricht | Beiträge des Benutzers
Zeroblaster
myCSharp.de - Member



Dabei seit:
Beiträge: 16

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
demo
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

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:
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8.746
Herkunft: Berlin

beantworten | zitieren | melden

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".
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
demo
myCSharp.de - Member



Dabei seit:
Beiträge: 12
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

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:
private Nachricht | Beiträge des Benutzers
M.Lach
myCSharp.de - Member



Dabei seit:
Beiträge: 33

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
HansFred
myCSharp.de - Member



Dabei seit:
Beiträge: 48

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4.433

beantworten | zitieren | melden

Schau mal in How to pause or resume a process with c# (effektiv werden damit alle Threads des Prozesses angehalten bzw. fortgesetzt).
private Nachricht | Beiträge des Benutzers