1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
380
380
EMPFEHLEN
-
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
-
27.09.08 18:35 #2
- 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?
-
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
-
28.09.08 12:32 #4
- 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
-
28.09.08 13:41 #5
- 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.
-
28.09.08 13:48 #6
- 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
-
28.09.08 16:19 #7
- 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.
-
@Kyoko
Du hast Recht mit:
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'.Warum rufst du nicht einfach die Abort-Methode des Threads auf?
Um dies zu umgehen hole ich mir den aktuellen Prozess und kille ihn.
Ich hoffe nur, das nicht zuviel Schrott übrig bleibt.Process.GetCurrentProcess().Kill()
Gruß
RaabunGeändert von Raabun (20.01.09 um 16:54 Uhr) Grund: Dies könnte die Lösung sein
Ähnliche Themen
-
Thread Hilfe, wie beenden?
Von Fridulin im Forum .NET ArchivAntworten: 6Letzter Beitrag: 17.05.10, 11:32 -
Thread Beenden?
Von jiim im Forum Java GrundlagenAntworten: 6Letzter Beitrag: 07.02.09, 16:49 -
Thread beenden
Von Hillkorn im Forum C/C++Antworten: 2Letzter Beitrag: 16.01.08, 21:08 -
Thread beenden
Von Winner im Forum C/C++Antworten: 10Letzter Beitrag: 07.12.07, 00:15 -
Thread beenden
Von MrPHP im Forum .NET ArchivAntworten: 1Letzter Beitrag: 12.05.04, 16:13





Zitieren
Login





