Загрузка DLL не способ создать поток.Ваши два варианта - использовать домены приложений или отдельные процессы.
Самый простой способ сделать это может состоять в том, чтобы просто использовать схему master / slave, где вся логика, которая использует библиотеку, выполняется в процессе slave.Мастер запускает столько «рабов», сколько ему нужно или нужно, а затем собирает возвращаемые значения.
Напишите код в «ведомом», как если бы он был однопоточным, потому что ... это так.
Используйте System.Diagnostics.Process.Start от мастера для запуска этих вещей.
В общем случае копирование DLL и загрузка всех копий не является отказоустойчивым подходом;Сами библиотеки могут получать доступ к ресурсам ОС, таким как мьютексы или даже файлы блокировки.Они не будут знать, что копии должны быть «отдельными».
Если ваша библиотека является чисто вычислительной библиотекой, и вы ОЧЕНЬ ДЕЙСТВИТЕЛЬНО хотите использовать метод копирования и загрузки копий, вы можете создать жесткие ссылки, чтобы избежать дублирования реального DLL-файла.(fsutil hardlink create
на Win7 или Vista)