200 threads is a lot, the number of threads that your computer can execute at a time is limited by the number of processor cores you have--having extra threads will increase the amount of thread switching, which is a very slow process.
Perhaps you should better describe the general problem (not the specific technical problem) you're trying to solve and see what suggestions you get.
...but to better answer this question... .NET provides several approaches to threading. They typically fall into 2 categories
System.Threading.Thread is used to manually manipulate the full lifecycle of individual threads.
System.Threading.ThreadPool provides a shared pool of threads which can be used for short jobs, when the thread completes it is returned to the pool. Using the ThreadPool greatly reduces the overhead in creating a new Thread--but the pool is limited, and consuming all threads from it will have severe side effects.
In .NET 4.0 there is the concept of a Task, which is not specifically a thread, but provides a mechanism roughly akin to a thread for performing small actions asynchronously
The approach you choose dictates how you work with it. System.Threading.Thread and System.Threading.ThreadStart classes are used for working with threads manually. The ThreadPool's main point of entry is via System.Threading.ThreadPool.QueueNewUserWorkItem(). Delegate.BeginInvoke as well as most methods named "Begin..." use the ThreadPool threads.