Ich möchte ein "Typ, um Suche" -Funktion wie die Google-Suche in meinem Programm zu implementieren. Nach jedem Typ startet mein Programm einen neuen Suchthread und tötet den alten.Vala: Wie asynchron auf x Sekunden warten und etwas dann ausführen
Aber jetzt möchte ich zum Beispiel 2 Sekunden warten, bevor der Such-Thread tatsächlich startet. Etwas wie dieses:
Countdown countdown = new Countdown();
countdown.set_action_after_x_secons(2sec, do_search);
private void SearchEntry_search_changed(){
countdown.reset_time(); //resets time to 2 seconds again
actual_search = SearchEntry.get_text();
}
private void do_search(){
// actual search here
}
Ich möchte vermeiden, zu vielen nutzlosen Threads zu spawnen. Was ist der beste Weg, dies in Vala zu tun?
GtkSearchEntry hat bereits eine interne Verzögerung von 150ms vor dem Auslösen 'search-changed' für den exakt gleichen Grund, warum ich denke, Sie Ihre 2s Verzögerung mögen. Es scheint keine Möglichkeit zu geben, die Verzögerungszeit einzustellen; Ich denke, Sie können dies als Feature-Anfrage auf dem GNOME Bugzilla fragen? – andlabs
Für andere Zwecke ist der Weg zur zeitbasierten Iteration mit 'GLib.Timeout.add()'. – andlabs
Die Verzögerung von 150 ms ist für meine Bedürfnisse etwas kurz. Aber Timeout scheint interessant zu sein. –