Проблема в том, что каждый поток создает свое собственное соединение. Если у вас запущено больше потоков, которые может принять целевая машина, вы столкнетесь с этой проблемой. Вам нужно найти способ убедиться, что вы не превышаете этот предел.
Есть ли причина, по которой это должно быть многопоточным? Я уверен, что ответ «да», но на тот случай, если вы думаете, что многопоточность ускорит операции копирования, допуская одновременное выполнение нескольких операций копирования, это не так. Существует только такая большая полоса пропускания, и целевой ПК сможет только читать / писать с определенной скоростью, поэтому, пытаясь записать несколько файлов в несколько потоков, вы фактически просто замедляете каждый файл по отдельности.
Однако, если я угадаю правильно, и есть еще одна причина для нескольких потоков, то позвольте мне предложить альтернативу: записывать файлы локально и перезаписывать совершенно другой процесс. Имейте службу Windows или консольное приложение, которое может копировать файлы, в то время как ваш поток пользовательского интерфейса и другие потоки работают. Добавление посредника может добавить немного сложностей, но это все же проще, чем пытаться найти способ решить эту проблему.
Альтернативой может быть отслеживание потоков и обеспечение того, чтобы число потоков никогда не превышало количество подключений, доступных на целевой машине, и вам нужно беспокоиться о других процессах, подключающихся к машине, чтобы вы могли ' Я тоже не рассчитываю на этот подход.
Отслеживание потоков и правильная блокировка, безусловно, выполнимы, но простая запись файлов локально и наличие внешней программы делают передачу файлов намного проще для записи и проще для устранения неполадок.