使用文件选择器更改图像的 ImageSource 时,弹出该文件正在使用中
On changing the ImageSource of the Image using file picker, pop up raised that the file is in use
我有一个带有默认 ImageSource 的图像,在使用文件选择器选择新图像时它加载正常,然后再次选择以前使用的文件,弹出窗口提示该文件仍在使用中。每次选择新图像时,它都工作正常。
有什么方法可以关闭或处置之前选择的文件或其 ImageSource 吗?
<Image x:Name="image" Source="Assets\RoadView.jpeg"></Image>
private void change_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Image Files ( *.png, *.bmp *.jpg, *.gif, *.tif)|*.png;*.bmp;*.jpg;*.gif;*.tif";
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
if (openFileDialog.ShowDialog() == true)
{
Stream stream = File.Open(openFileDialog.FileName, FileMode.Open);
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
image.Source = bitmapImage;
}
}
您没有关闭 FileStream,因此文件保持打开状态,无法再次打开。
关闭 FileStream 的最简单方法是通过 using
块处理对象。为了在关闭流之前立即加载 BitmapImage,您还需要设置 BitmapCacheOption.OnLoad
.
var bitmapImage = new BitmapImage();
using (var stream = File.Open(openFileDialog.FileName, FileMode.Open))
{
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
}
image.Source = bitmapImage;
我有一个带有默认 ImageSource 的图像,在使用文件选择器选择新图像时它加载正常,然后再次选择以前使用的文件,弹出窗口提示该文件仍在使用中。每次选择新图像时,它都工作正常。 有什么方法可以关闭或处置之前选择的文件或其 ImageSource 吗?
<Image x:Name="image" Source="Assets\RoadView.jpeg"></Image>
private void change_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Image Files ( *.png, *.bmp *.jpg, *.gif, *.tif)|*.png;*.bmp;*.jpg;*.gif;*.tif";
openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyPictures);
if (openFileDialog.ShowDialog() == true)
{
Stream stream = File.Open(openFileDialog.FileName, FileMode.Open);
BitmapImage bitmapImage = new BitmapImage();
bitmapImage.BeginInit();
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
image.Source = bitmapImage;
}
}
您没有关闭 FileStream,因此文件保持打开状态,无法再次打开。
关闭 FileStream 的最简单方法是通过 using
块处理对象。为了在关闭流之前立即加载 BitmapImage,您还需要设置 BitmapCacheOption.OnLoad
.
var bitmapImage = new BitmapImage();
using (var stream = File.Open(openFileDialog.FileName, FileMode.Open))
{
bitmapImage.BeginInit();
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
bitmapImage.StreamSource = stream;
bitmapImage.EndInit();
}
image.Source = bitmapImage;