Yes, you have to close the source stream.
You can use:
using (Stream sourceStream = File.Open("mySourceFile.data"))
{
using (Stream targetStream = File.Create("myTargetFile.data"))
{
targetSteam.CopyFrom(sourceStream);
}
}
(The "using" will ensure that "dispose" is called when the block is left, equal whether an exception occurred or not)
(See here for the "CopyFrom" extension method:
"Copy a Stream with Progress Reporting"[
^])