Я думаю, что здесь нет смысла использовать темы. Вы просто усложняете свой код и занимает слишком много памяти (каждому потоку требуется 1 МБ памяти). Сделайте что-то подобное, и вам не придется беспокоиться об очередях или блокировках:
private void Paste()
{
foreach (ListViewItem item in copiedItems)
{
fmc.PasteFromCopy(item.Text, somePath);
}
}
EDIT:
Если вам нужно использовать поток, отличный от основного потока, поскольку вы не хотите его блокировать, вы можете использовать один поток, который выполняет все операции копирования. Что-то вроде:
private void Paste()
{
var thread = new Thread(() =>
{
foreach (ListViewItem item in copiedItems)
{
fmc.PasteFromCopy(item.Text, somePath);
}
});
thread.Start();
}
По-прежнему не нужно использовать блокировки и значительно более эффективно использовать память, чем ваше решение со многими потоками.