Threading is a useful technique to use when you expect a task to take a long time and there are other tasks to be done. However, it's not clear to me that you have other tasks to do, but rather you simply need to let the user know that the system is still working on the task at hand. If that's the case, the status bar is a control that will work. The online documentation shows how to use it.
If you really do need to use threading for some reason, that would require an answer that's a little too long to handle here. I would suggest you look at some other threading code examples (my guess is that your Invoke() method isn't being called correctly), such as you might find at CodeProject.com. For example:
There's nothing wrong with looking (and learning) from other peoples' code.