Using an Event instead of a variable for stopping the thread.
Send our custom event to the end of the queue.
Moved thread generic stuff to it's own class.