How about putting the update into in it's own thread and just wait till any locks are released?
I though of that but think it's annoying, what if the user want to Quit the application? Should he wait for all the thread to perform... But someone give me a good idea, I could make a copy of the dabase andperform the search on the copy!