Конкретно по вопросу: файл открыт в другой программе, скорее всего, на запись в том числе. Логично, что нельзя этот файл ещё раз открыть на запись.
Конструктор FileStream, используемый в вашем коде FileAccess.ReadWrite:
public FileStream(string path, FileMode mode) :
this(path, mode, (mode == FileMode.Append ? FileAccess.Write : FileAccess.ReadWrite), DefaultShare, DefaultBufferSize, DefaultIsAsync)
{ }
Попробуйте такой код. Он тоже выдаст такую же ошибку, если файл попробовать таким способом открыть только в своём приложении:
using (FileStream source = new FileStream("NLog.config", FileMode.Open))
using (FileStream source2 = new FileStream("NLog.config", FileMode.Open))
using (FileStream target = new FileStream("newPath", FileMode.OpenOrCreate))
{
await source.CopyToAsync(target);
}
Стоит почитать книгу "
Конкурентность в C#. Асинхронное, параллельное и многопоточное программирование"
Скриншот сделан с видео:
https://youtu.be/lh8cT6qI-nA?t=1123