It's not advisable to set up windows in a single process to operate on multiple threads. This is because there are a lot of windows messages that are processed by the main message handler (which is 1 single thread) that needs to coordinate behaviour across the forms.
However, what you *can* do is use the ThreadPool or BackgroundWorker classes to do the *work* in each form. So basically, each form runs from the main thread (to avoid message pumping issues), but the "processing" code they perform utilize the ThreadPool or BackgroundWorker so the work can be done asynchronously.