Вы не можете сказать, для sertain, будет ли ThreadPool использовать разные потоки для каждой вашей вкладки.
Я не думаю, что это подходит для вашей задачи.Попробуйте использовать Task class с TaskFactory :
Task<double>[] taskArray = new Task<double>[]
{
Task<double>.Factory.StartNew(() => DoComputation1()),
// May be written more conveniently like this:
Task.Factory.StartNew(() => DoComputation2()),
Task.Factory.StartNew(() => DoComputation3())
};
double[] results = new double[taskArray.Length];
for (int i = 0; i < taskArray.Length; i++)
results[i] = taskArray[i].Result;
UPDATE :
Почему вы хотите создатьотдельный поток для каждой вкладки?Эта операция занимает очень много памяти, и, если количество потоков превышает число ядер в системе, из-за переключения контекста Windows происходит дополнительное снижение производительности.
Именно поэтому я предлагаю вам использовать задачидля вашего приложения - если число задач превышает количество ядер, вы можете дождаться результатов, используя метод ContinueWith .
По поводу вашего вопроса от Cooment: Да, ваш графический интерфейс будетотзывчивый, поскольку задачи выполняются с внутренними вызовами к объекту пула потоков, и вы можете создавать новые задачи с помощью TaskFactory.