C# Task killen geht nicht.

  • C#
  • .NET 4.5

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 19 Antworten in diesem Thema. Der letzte Beitrag () ist von Trade.

    C# Task killen geht nicht.

    Hey,
    ich habe mal was versucht & dabei diesen Code genutzt um etwas zu testen.. Halt ob sich der Prozess beendet:

    C#-Quellcode

    1. Process[] proc = Process.GetProcessesByName("taskmgr");
    2. proc[0].Kill();


    Es geht garnichts davon.. taskmgr geht nicht und andere Prozesse auch nicht.
    Habe auch schon mit .exe Endung versucht aber klappt ebenfalls nicht.
    Weiß jemand wieso es nicht klappt? Ich möchte halt einen einzelnen Prozess beenden können.

    Und wenn ich das ganze mit einem Button versuche kommt folgendes:
    Eine nicht behandelte Ausnahme des Typs "System.IndexOutOfRangeException" ist in test.exe aufgetreten.

    Zusätzliche Informationen: Der Index war außerhalb des Arraybereichs.

    LG.

    iCoreX schrieb:

    Ich wüsste nicht welchen Prozess sonst
    Der Task-Manager ist ein Bestandteil des Betriebssystems, das als Prozessmanager unter anderem die aktuell laufenden Programme und Prozesse anzeigt und verwaltet.
    Den kannst du nicht einfach so ausmachen...

    φConst schrieb:

    Bei mir klappt's.
    Sende mal die ganze Methode ( ich rate mal: Ist das in einem Timer?)


    C-Quellcode

    1. private void Form2_Load(object sender, EventArgs e)
    2. {
    3. Process[] proc = Process.GetProcessesByName("taskmgr");
    4. proc[0].Kill();
    5. }


    Geht unter Button auch net.. selbst mit Administrationsrechten geht es nicht^^
    Und nein, ist nicht in einem Timer.
    @VB1963 Du kannst auch den "explorer" killen.

    @iCoreX Das war nur ein Beispiel für VB1963, dein Weg mit der Process-Klasse ist schon der richtige, du solltest nur überprüfen ob ein Prozess gefunden wurde und lernen wie man debuggt.
    Antivirus 2.0: Der perfekte Schutz gegen Malware > Weitere Informationen :whistling:

    slice schrieb:

    @VB1963 Du kannst auch den "explorer" killen.


    Explorer.exe restartet sich direkt wieder nach einmal killen aber ja, es geht^^

    Btw, weiß zufällig jemand wie man ein loop hier einbaut?

    C-Quellcode

    1. Process[] proc = Process.GetProcessesByName("taskmgr");
    2. proc[0].Kill();​

    Sprich, das der Prozess immer wieder gekillt wird?
    Sry bin neu in C#^^
    Bin mehr so Vb.net, aber grundsätzlich so:

    C#-Quellcode

    1. ​while (true)
    2. {
    3. Tue irgendwas
    4. }

    Das du einen Prozess andauernd killst, hört sich für mich bisschen nach einem Virus an ;) . Sorry, wenn ich mich (sehr wahrscheinlich) irre, aber das ganze hört sich irgendwie so an.

    LG Popa21
    Bei den Maßen der Einfachheit stößt man an Grenzen, aber: "Es geht immer komplizierter".
    @Popa21 Nein, grundsätzlich nicht so. So eine Endlosschleife ist alles andere als performant.
    Außerdem ist Polling und Killen des Taskmanagers mal wieder der falsche Weg, das zu lösen.
    Allerdings würde mich auch interessieren, was der TE hier machen will...

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Fragen per PN, denn dafür ist das Forum da :!:
    Dann wäre wohl ein sinnvoller Vorschlag besser geeignet gewesen, z.B. eine eigenthread-intervallmäßige Beendigung des Zielthreads. Dem TE eine Antwort zu geben, obwohl man von der Unzweckmäßigkeit des eigenen Vorschlags überzeugt ist, kann zu ziemlichen Verwirrungen führen. Von entsprechenden Hinweisen der anderen Teilnehmer mal abgesehen. Eine Alternative wäre zwar noch gewesen, den Vorschlag mit einem Warnhinweis über offensichtliche Vorschlagsnachteile zu versehen, aber das geschah ja bereits durch Trade.
    Aber wie schon erwähnt wurde: Solange nicht klar ist, was der TE vorhat, sollte Konkretcode erstmal ausbleiben.
    • meine wichtigste Programmiererkenntnis: Mühsam erhängt sich das Eichhörnchen.
    • eine häufig von mir verwendete Abkürzung: CEs = control elements (Labels, Buttons, DGVs, ...)
    • »Oh, großes Spaghetticodemonster. Bitte schicke mir Durchblick! Oder zumindest eine Gabel. Oder – wenn es kein Besteck mehr gibt – zumindest Glasnudeln.«
    • If Not GrammarIsOk() Then AssumeThatCodeIsOk = False
    Und einen Loop kann man nur so lösen?
    Wenn Du es selbst nicht so machen würdest, dann scheinst Du ja alternative Möglichkeiten zu kennen, die besser sind.
    Edit: VaporiZed war schneller.

    In jedem Fall ist aber (umabhängig davon wie) ein Loop bzw. Polling für sowas die unsaubere Lösung.
    Alles in allem ist eh unklar, was der TE vor hat. Wäre ganz gut, wenn er das mal erläutern könnte.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Fragen per PN, denn dafür ist das Forum da :!:
    Und um die Sprache näher kennenzulernen kommt man auf die Idee, einfach mal den TaskManager zu sperren? Klingt für mich nicht gerade glaubwürdig, sondern eher nach Malwareentwicklung. Aber selbst wenn Du das nicht dafür nutzen wollen würdest, könnte es dafür von Dritten missbraucht werden.
    Daher mache ich hier lieber mal zu. Thema geschlossen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Fragen per PN, denn dafür ist das Forum da :!: