Threads richtig killen

LuCasn

Grünschnabel
Hallo Leute!

Ich habe eine Frage an euch, und zwar:

Ich habe einen Thread, der in einer Datei byteweise liest und die Inhalte hochlädt. Um diesen Vorgang vor Ende Abzubrechen, kille ich den Thread mit Thread.Abort(). Jodech wird die Datei nun nicht geschlossen und somit nicht wieder freigegeben. Wie kann ich erreichen, dass beim Abort() des Threads ein bestimmtes Ereignis ausgelöst wird, in dem ich dann die Datei schliessen kann?
 
Hab nochmal nachgedacht, und mir ist aufgefallen, das ein Ergeignis OnKill oder so gar nichts bringen würde in meinem Fall. Ich muss einfach die Codestruktur dahingehend verwenden, dass der Thread einen anderen Codeteil umschliesst.
 
Es wäre auch ne Möglichkeit den Thread in nem try block laufen zu lassen und unten im catc dann die ThreadAbort Exception zu fangen und da dann die Datei zu schließen oder eben im finally :D der Thread hört ja nicht schlagartig sofort auf.
 
Der Thread startet einen Stream (Reader), richtig? Also was muss man tun, um den Thread zu killen? Richtig, den Stream schließen - dann beendet sich auch der Thread bei nem Abort().
 
Also...

Ein Prozess ist eine laufende Anwendung bzw. ein laufendes Programm, wie du als Windows-Anwender wohl wissen wirst.
Ein Thread ist nun sowas, wie ein roter Faden, der sich durch dieses Programm zieht, ein Programmteil, z.B. das Warten auf ein bestimmtes Ereignis wie die Aktualisierung einer Web-Site.

Ein Prozess lässt sich in mehrere Threads unterteilen, d.h. während Thread 1 die ganze Zeit auf die Aktualisierung der Web-Site wartet, wird Thread 2 nur kurz geweckt, um eine Datei zu öffnen und schläft nachdem die Datei geöffnet, bearbeitet und wieder geschlossen wurde, wieder ein.

So oder so ähnlich habe ich diese Konzept aus entsprechender Literatur heraus verstanden... (Schwere Schinken, die sich mit theoretischer Informatik befassen)
Wobei es natürlich auch sein kann, dass ich etwas falsch verstanden habe ;)
Wenn dem so sein sollte, bin ich für eine Korrektur natürlich dankbar.

Gruß, Niko
 
Vielen Dank für deine Hilfe.

Gut also was ein Thread ist verstehe ich jetzt so halb.
Also nennt LuCasn den Stream nur Thread oder kann man einen Thread direkt selber programmieren?

(Wenn ich richtig verstanden hab liest er einen stream aus, oda?)

Ich habe einen Thread, der in einer Datei byteweise liest

Bitte nicht mit mir verzweifeln :rolleyes:
 
Vielen Dank für deine Hilfe.

Gut also was ein Thread ist verstehe ich jetzt so halb.
Also nennt LuCasn den Stream nur Thread oder kann man einen Thread direkt selber programmieren?

(Wenn ich richtig verstanden hab liest er einen stream aus, oda?)



Zitat:
--------------------------------------------------------------------------------
Ich habe einen Thread, der in einer Datei byteweise liest
--------------------------------------------------------------------------------



Bitte nicht mit mir verzweifeln

Soweit ich weiß, ist ein Thread kein Stream.
Ich muss allerdings dazusagen, daß ich bisher in der Praxis noch keine Threads verwendet habe. Mein "Wissen" beruht nur auf dem Wälzen von Büchern. :)
Ein Stream ist sowas wie eine virtuelle Datenleitung, die man legt, um Datenquellen anzuzapfen.

Ich denke, was LuCasn meint ist ein Thread, den er innerhalb eines FileStreams öffnen und schließen will.
D.h. zuerst öffnet er einen FileStream, und erzeugt in diesem FileStream einen Thread, um seinen Dateien auszulesen.

Um ebendiesen Thread zu schließen, bzw. zu killen, kann er dies entweder tun, ohne den Stream zu schließen, oder er schließt den Stream und killt automatisch alle in ihm laufenden Threads.

Gruß, Niko
 
Achso:p

Jetzt versteh ich. Hmm dann muss ich auch mal irgendwas welzen. Ich würd nämlich gern wissen wie man einen Thread programmiert und andwendet.

Vielen vielen Dank
 

Neue Beiträge

Zurück