我在 Xamarin.Forms UWP 应用程序中显示图像,该图像位于应用程序的 LocalState 文件夹中,图像源是在运行时设置的。
图像一显示,底层文件就打开了,因此不能重命名,例如Windows 资源管理器。
但即使我离开显示图像的页面或将图像源设置为 null 或其他图像,文件仍会打开并且无法重命名,直到我关闭 UWP 应用程序。 此行为不会发生在 Android 或 iOS 上。
如何释放Image显示的文件?
图像的 XAML 标记:
<Image x:Name="img"/>
设置图片来源:
string basePath = @"C:\Users\ss\AppData\Local\Packages\f736c883-f105-4d30-a719-4bf328872f5e_nh7s0b45jarrj\LocalState";
img.Source = ImageSource.FromFile(Path.Combine(basePath, "beleg.jpg"));
谢谢!
编辑: 这是我的工作解决方案,感谢 Clemens 的帮助!
IFolder localStorage = FileSystem.Current.LocalStorage;
IFile sourceFile = await localStorage.GetFileAsync("beleg.jpg");
var memoryStream = new MemoryStream();
using (var fileStream = await sourceFile.OpenAsync(FileAccess.Read))
{
await fileStream.CopyToAsync(memoryStream);
}
memoryStream.Position = 0;
img.Source = ImageSource.FromStream(() => memoryStream);
最佳答案
这应该有效(虽然我还没有测试过):
var path = Path.Combine(basePath, "beleg.jpg");
var memoryStream = new MemoryStream();
using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
fileStream.CopyTo(memoryStream);
}
memoryStream.Position = 0;
img.Source = ImageSource.FromStream(() => memoryStream);
关于c# - Xamarin.Forms UWP 图像永远不会关闭打开的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720864/