我想实现一个"类型来启动搜索" -feature就像我的程序中的谷歌搜索一样。在每种类型之后,我的程序启动一个新的搜索线程并杀死旧的搜索线程。
但是现在我想在搜索线程确实启动之前等待2秒。像这样:
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
}
我想避免产生许多无用的线程。在Vala中这样做的最佳方式是什么?
答案 0 :(得分:1)
感谢@andlabs! GLib.Timeout是关键字。有关解决方案,请参见此处:
private int search_delay = 1000;
private uint delayed_changed_id;
public void search(string txt){
search_text = txt;
reset_timeout();
}
private void reset_timeout(){
if(delayed_changed_id > 0)
Source.remove(delayed_changed_id);
delayed_changed_id = Timeout.add(search_delay, timeout);
}
private bool timeout(){
// do actual search here!
delayed_changed_id = 0;
return false;
}