Rob is right about the running threads but there is no problem about creating a new thread each time the user clicks the search button because I suppose this thread will search for something and then end quickly, right? So there is no risk of creating hundreds of non-terminating threads.
There are 2 options:
1. create a unique thread and use some signaling to tell when to start the search, when it is done, and when to quit the thread.
2. create one thread per click (like you already did).
Option 2 is much simpler of course and is suitable for your case.
Additionnaly, I would recommand you to have a look to
BackgroundWorker
class. This class provides simple use of a background thread, can report progress, and supports cancelation.
And if you want a ready-to-use UI for that, you may want to have look there:
ProgressForm: A simple form linked to a BackgroundWorker[
^]