Übrigens ist es keine Tugend, alles in eine Routine zu quetschen. Das ist sowas von gestern, ach was sag ich, vorvorvorgestern... Definier doch einfach eine Klasse, führe einfache kleine Methoden ein und schreibe das Ganze, das es verständlich ist. "Clean Code" nennt sich das. Probiere es mal aus.
Prinzipiell bin ich deiner Meinung, aber bei dieser "Begründung" ziehst du niemanden aus dem Schatten der seitenlangen Prozeduren in säubernde Licht des blütenreinen Programmierens
Die Reaktionen sind
imho leicht übertrieben (bis auf die zur Fehlerbehandlung
). Es gibt
deutlich schlimmeren Code.
Der Hinweis auf den Workerpool ist für diese Aufgabe zwar legitim, man sollte das
imho aber auch mal zu Fuß gemacht haben, damit man eine Vorstellung davon hat, was bei so einer asynchronen Ausführung so passiert.
Ein Fehler ist mir ins Auge gefallen: Der
RuFileCopyExecute wird in
Execute das falsche Callback übergeben. Eigentlich willst du ja die synchronisierte Variante.
Das
CreateSuspended = true und das Konstrukt mit dem
with kannst du dir sparen, wenn du die Eigenschaften, die du im
with setzt, direkt im Konstruktor setzt.
OnTerminate wird im Hauptthread ausgeführt, das
synchronize solltest du dir an der Stelle sparen; oder du lässt
onTerminate leer und rufst
ThreadCopyCallback(cRuFileCopyReady);
direkt am Ende von
Execute auf.