Значение:
new URL("http://www.yahoo.com").equals(new URL("http://209.191.93.52"))
true
.
(От Трудных вопросов Java)
Вы почти у цели.
Использование BitmapCacheOption.OnLoad было лучшим решением для предотвращения блокировки вашего файла.
Чтобы заставить его перечитывать файл каждый раз, когда вам также понадобится для добавления BitmapCreateOptions.IgnoreImageCache.
Добавление одной строки в ваш код должно сделать это:
imgTemp.CreateOption = BitmapCreateOptions.IgnoreImageCache;
, что приведет к следующему коду:
uriSource = new Uri(Combine(imagesDirectoryTemp, generatedFileName), UriKind.Absolute);
imgTemp = new BitmapImage();
imgTemp.BeginInit();
imgTemp.CacheOption = BitmapCacheOption.OnLoad;
imgTemp.CreateOptions = BitmapCreateOptions.IgnoreImageCache;
imgTemp.UriSource = uriSource;
imgTemp.EndInit();
imgAsset.Source = imgTemp;
Когда вы загружаете изображение в любой элемент управления WPF, он обрабатывает ваше изображение и не освобождает его, пока вы не закроете приложение. Причина этого ... Я не знаю точно, вероятно, это ретрансляция некоторого кода DirectX за сценой, который никогда не знает, когда приложение WPF выпустит изображение .. Используйте этот код для загрузки изображения ..
MemoryStream mstream = new MemoryStream();
System.Drawing.Bitmap bitmap = new Bitmap(imgName);
bitmap.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg);
bitmap.Dispose(); // Releases the file.
mstream.Position = 0;
image.BeginInit();
image.StreamSource = mstream;
image.EndInit();
this.img.Source = image ;
у меня сработало ..
Похоже на проблему, которую я имел при разработке Intuipic , где WPF не удалял изображение, блокируя файл. Посмотрите этот преобразователь , который я написал для решения проблемы.