Hallo,
um Threads zu überwachen, habe ich mir nun folgende zwei Lösungsmöglichkeiten überlegt:
a) Eine Klasse ManagedThread schreiben, die einen Thread aggregiert, und alle Informationen über diesen bereitstellt. Der Zugriff auf den Thread erfolgt nur noch über die ManagedThread-Klasse. Es gibt eine zentrale Instanz, an der sich die einzelnen ManagedThreads an- und abmelden. Als Vorteil sehe ich hier eine saubere Kapselung der Threads, als Nachteil den Overhead einer zusätzlichen Klasse.
b) Einen dedizierten ThreadManager schreiben, bei dem Threads nach ihrer Erzeugung händisch registriert werden müssen. Der Zugriff auf die Threads kann bleiben, wie er ist, was ich durchaus als Vorteil sehe. Als Nachteil empfinde ich, dass vergessen werden könnte, dass ein Thread registriert werden muss.
Gibt es hierzu noch alternative Vorgehensweisen? Welche von ihnen erachtet Ihr für sinnvoller? Warum?
Viele Grüße,
Golo
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden
Wenn Du die Threads selbst erzeugst, würde ich den Manager verwenden. Vielleicht eine "eigene" Thread-Basisklasse, in deren Ctor sich beim statischen Manager angemeldet wird. Das bietet den Vorteil, dass man sich nicht mehr um die Registrierung beim Manager kümmern muss. Den Manager könnte man dann mit belieben Events, etc vollpacken.
So hast Du volle Kontrolle (und Überwachung) über deine Threads...