Das Problem was ich noch habe, ist das ich gleichzeitig auch eine SQLite Database genau so durchsuchen will.
Meine Idee ansonsten ist die Dateien global einzulesen. Bei einer Suche wird zuerst überprüft ob sich die Datei verändert hat (Durch externen Editor). Wenn nicht dann die Globale (z.B. StringList) verwenden oder ansonsten halt die Datei neu laden. Um die Daten aber neu zu laden bräuchte man wieder eine ThreadSafe StringList was wieder den gleichzeitigen Zugriff blockiert.
Mir scheint, daß nicht der zugriff auf die Festplatte das Problem ist, sondern daß hier einige Abläufe nicht richtig zueinander passen.
Gruß
K-H