I have a desktop application. I want to create a background thread that will call some functions or wait for an event to occur, without blocking the main thread (the user must be able to access the main form, click buttons etc.). The background thread is hidden for him. And when the function called is finihed or specified event occurs, the main form will be notified. Any Help?