tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von Kyoko
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
380
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Raabun Raabun ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    47
    Moin

    mein Problem:

    ich möchte einen thread beenden, der auf eine Eingabe wartet.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    
     ' Thread zum Steuern des Programms
        '
        '
        Public Sub stop_nst_bde()
            Dim eingabe As String
            Dim lauf As Integer = 1
            Try
                While lauf > 0
                    Thread.Sleep(1)
                    write_logo()
                    [COLOR="Red"]eingabe = Console.ReadLine()[/COLOR]
                    If eingabe.Length > 2 Then
                        If eingabe = "stop" Then
                            run = 12
                            lauf = 0
                        End If
                        If eingabe = "ini" Then
                            run = 14
                        End If
     
                        If eingabe = "user" Then
                            run = 15
                        End If
                        Console.WriteLine("peep")
                    End If
                End While
            Catch ex As Exception
                SystemFileHandling.LogData("Stop", 1, 1)
            End Try
    End Sub

    Das Programm läuft als Konsolenprogramm auf einem Rechner, der nicht beobachtet oder bedient wird.
    Ich müßte nun einen Weg finden, der es mir erlaubt entweder den Tastendruck zu simulieren oder den Thread einfach zu killen

    Gruß

    Raabun
     

  2. #2
    Kyoko Kyoko ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Ort
    Wels (Oberösterreich) bzw. Mayrhofen (Tirol)
    Beiträge
    211
    Warum rufst du nicht einfach die Abort-Methode des Threads auf?
    Raabun bedankt sich. 

  3. #3
    Raabun Raabun ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    47
    Weil es nicht funktioniert. Die Konsole wartet auf eine Eingabe und solange die nicht erfolgte,
    wird auch nicht die Exception ausgeführt.
    IMHO, steht es auch so in der MSN...

    Gruß

    Raabun
     

  4. #4
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    120
    Hallo Raabun,

    ich bin mir nicht sicher, aber könntest Du nicht die SendKeys.Send()-Methode verwenden, um einen Tastendruck in der Konsole zu simulieren? Ich denke doch, dass die Methode auch auf Konsole-Applikationen angewandt werden kann.

    Gruß
    PhoenixLoe
     

  5. #5
    Kyoko Kyoko ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Ort
    Wels (Oberösterreich) bzw. Mayrhofen (Tirol)
    Beiträge
    211
    Ach ja,entschuldige, hab nicht daran gedacht, dass ReadLine den Thread "blockiert".

    Ich muss mal n bisschen rumprobieren. Wenn ich was finde, schreib ichs hier.

    @PhoenixLoe:

    Nein, SendKeys.Send funktioniert nur, wenn die Anwendung Window-Messages verarbeitet. Und das macht eine Konsole nicht.
     

  6. #6
    PhoenixLoe PhoenixLoe ist offline Mitglied Gold
    Registriert seit
    Apr 2005
    Beiträge
    120
    Hallo Kyoko,

    da ist etwas Wahres dran .
    Alternativ die Console.ReadLine()-Funktion in einen zweiten Thread auslagern, den man wie schon erwähnt per Abort-Methode beenden kann.

    Gruß
    PhoenixLoe
     

  7. #7
    Kyoko Kyoko ist offline Mitglied Gold
    Registriert seit
    Jun 2004
    Ort
    Wels (Oberösterreich) bzw. Mayrhofen (Tirol)
    Beiträge
    211
    Naja, das wird auch nicht gehen. Das ReadLine() blokiert eben den Thread. Dann lässt er sich nicht beenden.

    Ich hätte die Idee den Thread in einen eigenen Prozess auszulagern. Den kannst ja einfach hart killen.
     

  8. #8
    Raabun Raabun ist offline Mitglied Bronze
    Registriert seit
    Jan 2004
    Beiträge
    47
    @Kyoko

    Du hast Recht mit:
    Warum rufst du nicht einfach die Abort-Methode des Threads auf?
    Ich habe ja noch meinen Restprogram, aus dem kann ich natürlich die Abort-Methode aufrufen. Der Thread ist nun weg, aber erwartet immer noch auf ein 'Enter'.
    Um dies zu umgehen hole ich mir den aktuellen Prozess und kille ihn.

    Process.GetCurrentProcess().Kill()
    Ich hoffe nur, das nicht zuviel Schrott übrig bleibt.

    Gruß
    Raabun
    Geändert von Raabun (20.01.09 um 16:54 Uhr) Grund: Dies könnte die Lösung sein
     

Ähnliche Themen

  1. Thread Hilfe, wie beenden?
    Von Fridulin im Forum .NET Archiv
    Antworten: 6
    Letzter Beitrag: 17.05.10, 11:32
  2. Thread Beenden?
    Von jiim im Forum Java Grundlagen
    Antworten: 6
    Letzter Beitrag: 07.02.09, 16:49
  3. Thread beenden
    Von Hillkorn im Forum C/C++
    Antworten: 2
    Letzter Beitrag: 16.01.08, 21:08
  4. Thread beenden
    Von Winner im Forum C/C++
    Antworten: 10
    Letzter Beitrag: 07.12.07, 00:15
  5. Thread beenden
    Von MrPHP im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 12.05.04, 16:13