Klar gibt es viele Moeglichkeiten. Aber die sind nicht alle gleich gut, und das, was du da praesentiert hast, widerspricht in mehreren Punkten ueblichen und besseren Praktiken. Und es zu kommentieren ist nicht anmassend, sondern verhindert, dass sich andere daran unreflektiert ein Beispiel nehmen. Das du persoenlich besser weisst, was du da getan hast und was nicht, und das es auch fuer dich sinnvoll war im urspruenglichen Kontext - geschenkt.LivingOn hat geschrieben: Wieso macht man sich damit die Nebenläufigkeit kaputt?
Der Thread läuft parallel zum Hauptprogramm (also nebenläufig). Ob ich nun mit einem join oder Lock auf die aktuelle Operation warte, ist gehupft wie gesprungen. Wenn Exceptions in der Verarbeitung zu erwarten sind, sollte man natürlich im finally das Lock wieder freigeben. Da ich aber nur ein einfaches Beispiel bringen wollte und der Code so wie er da steht keine Exception wirft, halte ich Deine These "immer in einem finally releasen" für ein wenig überzogen. Es gibt viele Möglichkeiten wie man so etwas implementieren kann. Ich maße mir allerdings nicht an, andere Lösungen von vornherein in Frage zu stellen, nur weil sie nicht so funktionieren, wie ich es für richtig halte.
Aber hier geht es ja um einen allgemeineren Ansatz zur Thread-Synchronisation, und da ist eben weder der Verzicht auf try/finally noch eine "ich warte immer bis zum bitteren Ende" geeignet.