There are various approaches you could take to do this,
The first would be to implement the "Parallel.For" or "Parallel.ForEach" approach which will use .Net's parallel class to distribute the required operation.
This link gives an example of the Parallel.ForEach
Parallel.ForEach Example[
^]
There is also an example of the Parallel.For look just
here[
^]
If that does not do your task, then you will want to look at your own implementation using threading, where you create threads (up to a controlled limit), and each one is responsible for copying a file.
Now, I have my own concern with this, and that is that the more copy/paste processes you have going on the faster it might be only to a point. This point is the point at which the Disk I/O speed or the Memory space (as in RAM) start to bottle neck.
When you are in windows and you start copying lots of files individually but at the same time, you should notice that all the copies "appear" to slow down. Just something to be aware of.