private void do_searches_thread_impl() {
// first time, show all
run_search();
this.async_call_and_wait(() => {
rebuild_result();
update_preview_text();
});
while (!closed_) {
Thread.Sleep(250);
search_for cur = null;
this.async_call_and_wait(() => {
if (combo.DroppedDown)
return;
var cur_search = current_search();
if (prev_search_ == cur_search)
// nothing changed
return;
cur = cur_search;
prev_search_ = cur;
preview.Text = "Computing [" + prev_search_ + "]";
});
if (cur == null)
continue;
logger.Info("[search] searching: " + cur.text);
run_search();
this.async_call_and_wait(() => {
rebuild_result();
update_preview_text();
});
logger.Info("[search] searching: " + cur.text + " - complete");
}
}