If the copy process is time consuming I would definitely suggest spanning a new background worker (thread) dedicated for the copy process so that the main service thread is free to do more important and meaningful stuff. Also you might need the copy background worker to expose a property to the main service thread the status of the copy process i.e. like not started, in progress, finished.
Check the Remarks section here: