Я выполняю операции чтения/копирования изображений в приложении WPF. Пожалуйста, посмотрите на следующий фрагмент кода:Файл недоступен, так как он используется другим процессом.
try
{
if (sourceDir != "")
File.Copy(sourceDir, Path.Combine(backupDir, ecode + ".jpg"), true);
}
catch (Exception exx)
{
MessageBox.Show(exx.ToString());
}
теперь объяснить проблему со сценарием:
Первый раз, когда этот код выполняет sourceDir
и Path.Combine(backupDir, ecode + ".jpg")
значения:
SourceDir = "C: \ Users \ Public \ Pictures \ Sample Pictures \ Desert.jpg "
Path.Combine (backupDir, ecode +" .jpg ") =" D: \ IEPL-архивы-не Изменить \ DATA \ 654.jpg»
Это работает отлично в первый раз, и файл копируется в папку назначения.
Но во второй раз, когда этот код выполняется со следующими значениями:
SourceDir = "C: \ Users \ Public \ Pictures \ Sample Pictures \ Penguins.jpg"
Path.Combine (backupDir, ecode + ".jpg ") =" D: \ IEPL-архивы, не Modify \ DATA \ 654.jpg"
Он бросает следующее исключение:
Я также отображаются в то же изображение Пользовательский интерфейс, то есть cau петь это исключение. Вот код, который отображает изображение в пользовательском интерфейсе:
image1.Source = new BitmapImage(new Uri(GetPicture(txtBarcode.Text), UriKind.RelativeOrAbsolute));
private string GetPicture(string _eid)
{
string picname = "";
if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".jpg"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".jpg";
else if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".jpeg"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".jpeg";
else if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".png"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".png";
else if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".gif"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".gif";
else if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".JPG"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".JPG";
else if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".JPEG"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".JPEG";
else if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".PNG"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".PNG";
else if (File.Exists(@"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".GIF"))
picname = @"D:\IEPL-archives-Do not Modify\DATA\" + _eid + ".GIF";
else
picname = @"Images\defaultPicture.jpg";
return picname;
}
Пожалуйста, подсказывает, как я могу изменить код так, чтобы этот конфликт не возникнет? Thanks
Является ли изображение (D: \ IEPL-архивы, не Modify \ DATA \ 654.jpg) показывается в интерфейсе? – ekholm
@ekholm yes Это изображение показано в UI одновременно. – Azeem
Оба 'Path.Combine (backupDir, ecode +" .jpg ")' имеют ** то же самое местоположение целевого изображения **. Это предназначено? Если нет, это уже может послужить причиной вашего исключения ... –