Warum sollten die Aufrufe den Lock selbst steuern?
Es gibt da zwei Herangehensweisen und beide haben ihre Vor- und Nachteile. Die eine geht davon aus, daß der Funktionsaufruf alles Nötige kapselt und die Threadsicherheit herstellt, während die andere sich lediglich um die Funktionalität kümmert und bestimmte Anforderungen an die Umgebung stellt. In gewissem Sinne ist die zweite Art das, was du implementierst: Die einzelnen Funktionen werden mit einem Wrapper versehen, der sich um Locks und Error-Handling kümmert. Da ist erstmal nichts falsch dran.
Was ich auch noch festgestellt habe, var Parameter in TuDies(var _UID : Integer) können nicht aus der anonymen Methode genutzt werden,
Das ist eine Einschränkung bei Anonymen Methoden. In diesem Fall kann der Compiler nicht wissen, wo die Variable wirklich liegt, und kann sie somit nicht einfach in die Closure verlagern.