I have a textbox in which the user types a search string and then the program makes a search for that string on a background-working-thread.
Right now i'm re-using the same old thread (and wait to make a new search only when the thread is finished/cancelled).
I would be a lot easier if I could just create a new thread each time i want to make a search - because then I would not need to wait for the other thread to be completed before making the search.
The search occurs every time time the text is changed (event textbox.TextChanged) - so that means a lot of new and disposed threads...
Is this a viable strategy or should I continue re-using the same thread (makes room for a lot of potential bugs)?
This is a win-form project in C# 4.0
What you are looking for is called Thread Pool.
It is basically same thing as you are doing in a sense that it reuses a thread. Except that there are many threads and the reuse is hidden from the invoker. More explanation here.
Also, Peter's suggestion of using
Taskis similar to usingThread Pool, because Tasks run onThread Poolby default.And don't forget that you still have to solve a problem of having multiple searches running at the same time and that they might not finish in order that they were started nor can they have valid data for current search. It would be best if you could "cancel" the current search before starting a new one.