Are you firing off one thread per DLL? If so, use a thread pool and manage the number of concurrently running threads to allow the application to keep up.
There are a number of articles on this site regarding thread pooling, and I wriote one of them.
Multithreading, Delegates, and Custom Events[
^]
Your original question provides NO info regarding what you've tried, or how you're doing it. Until you provide that info, the best you're going to get is a stab in the dark, and most likely, no real answer at all.