Ich würde die Suche in einen eigenen Task auslagern und beim Tastendruck einen ggf. laufenden Task abbrechen und den Neuen starten.
Einen Datenbestand zu durchsuchen ist ja nun nichts, was unbedingt im UI Thread stattfinden muss, oder?
Solange die Suche nicht den UI Thread behindert, sehe ich eigentlich nichts was gegen eine automatische Suche spricht.
Ich synchronisere mit dem Hauptthread. Das Ergebnis muss ja irgendwie auf den Bildschirm. Bei meinem Beispiel kann man den Thread auch weglassen.