Why is it that
System.IO.IOException: "Source and destination path must have
identical roots. Move will not work across volumes."
You can also p/invoke
SHFileOperation which is the same function Windows Explorer uses to move directories around. It will either perform a true move or recursive-copy-then-delete, as appropriate.
It can also show the same progress UI as explorer, just by setting a flag.