c# - Xamarin.Forms UWP 图像永远不会关闭打开的文件

标签 c# image xamarin uwp uwp-xaml

我在 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/

相关文章:

c# - 如何在 Service Fabric 中获取数据包的路径?

c# - 在 C# 中添加矩阵?

css - ionic 如何在图像旁边添加按钮

javascript - 是否可以在 HTML5 Canvas 中使用多个图像?

c++ - 使用 libjpeg 读取 .jpeg 文件时出错

c# - 如何重命名 Xamarin 绑定(bind)库中的属性

c# - Outlook.MailItem.UserProperty 发送邮件后消失

c# - 基于 C# 的不同服务之间的通信

android - Xamarin Android SetBackgroundDrawable 已弃用但未弃用 SetBackground()

visual-studio - 是否可以设置 Xamarin Studio StartupItem 'per user' 而不是在 sln 文件中?