Prinzip erkannt - mein Trivales Grundgerüst ist im Vergleich aber irgendwie schneller...
Es stockt noch ein Wenig - denke dass die DataAvailable prozedure sich mit den Erreignisen des UDP Client überschneidet,
kann ich da einen Thread oder Application.ProcessMessages einbringen?
Dazu kann ich ohne Kenntnis deines Codes nicht viel sagen.
Ich weiß auch nicht, ob du erfahren genug bist, einen Thread korrekt zu implementieren. Dein ursprünglicher Code läßt das eher zweifelhaft erscheinen. Von ProcessMessages rate ich in jedem Fall ab - das macht es definitiv nicht schneller sondern nur schwieriger die Fehler zu finden.
Als erstes müsste man wohl analysieren, wo die kritischen Stellen wirklich liegen.