Rather than just giving you the code, I'll give you some pseudo code. You should be able to convert the logic into actual code with ease.
If source directory doesn't exist take no action
If destination directory doesn't exist, create the directory
Create a background task for the file copy operation
For each file in the source directory
If the file doesn't exist in the destination directory
Copy the file into the destination directory
End if
Report the percentage of files copied back to the primary thread.
Next
For the task based work, I'd recommend using
Task
over
BackgroundWorker
.