c# - 我找不到“找不到组件。(HRESULT 异常:0x88982F50)”的解决方案
问题描述
加载 BitmapImage 时遇到问题。我正在使用 2 个函数来返回位图图像。第一个函数确定它应该加载哪个图像,然后将 StorageFile 传递给第二个函数以从 assets 文件夹中读取该文件。
第二个函数似乎没有任何问题,因为它在我的代码中的其他地方调用。如果我将第一个函数实现为具有位图图像的对象中的方法,则第一个函数将正常工作。但是,在 UI 中无法正确显示图像存在一个奇怪的问题。
功能一:
public async Task<BitmapImage> setImage(StorageFile file)
{
switch (file.ContentType)
{
case ".mp3":
var mp3 = new Uri("ms-appx:///Assets/mp3.png");
return await pullImage(await StorageFile.GetFileFromApplicationUriAsync(mp3));
case ".wav":
var wav = new Uri("ms-appx:///Assets/wav.png");
return await pullImage(await StorageFile.GetFileFromApplicationUriAsync(wav));
case ".mid":
var mid = new Uri("ms-appx:///Assets/midi.png");
return await pullImage(await StorageFile.GetFileFromApplicationUriAsync(mid));
case ".midi":
var midi = new Uri("ms-appx:///Assets/midi.png");
return await pullImage(await StorageFile.GetFileFromApplicationUriAsync(midi));
default:
var def = new Uri("ms-appx:///Assets/Square150x150Logo.scale-200.png");
return await pullImage(await StorageFile.GetFileFromApplicationUriAsync(def));
}
}
功能二:
private async Task<BitmapImage> pullImage(StorageFile file)
{
using (var randomAccessStream = await file.OpenAsync(FileAccessMode.Read))
{
var result = new BitmapImage();
await result.SetSourceAsync(randomAccessStream);
return result;
}
}
这就是我调用函数的方式
List<File> files = new List<File>();
IReadOnlyList<StorageFile> subfiles = await globalFolder.GetFilesAsync();
foreach(StorageFile subfile in subfiles){
files.Add(new File { Name = subfile.Name, Image = await pullImage(subfile)});
}
当前代码应返回默认情况下的 bitmapImage,因为 file.ContentType 的情况当前不正确。我收到以下错误The component cannot be found. (Exception from HRESULT: 0x88982F50)
此外,我在另一个函数的 case 语句中使用相同的方法来获取位图图像,完全没有问题。
解决方案
我找不到“找不到组件”的解决方案。(HRESULT 异常:0x88982F50)”</p>
我检查了你的代码。问题是您使用了错误的方法。您需要使用setImage
方法BitmapImage
为您的 File 实例创建,但不是pullImage
.
List<File> files = new List<File>();
IReadOnlyList<StorageFile> subfiles = await KnownFolders.PicturesLibrary.GetFilesAsync();
foreach (StorageFile subfile in subfiles)
{
files.Add(new File { Name = subfile.Name, Image = await setImage(subfile)});
}
并且不要错过修改中间文件的源图像名称。
case ".mid":
var mid = new Uri("ms-appx:///Assets/midi.png"); // wrong name
return await pullImage(await StorageFile.GetFileFromApplicationUriAsync(mid));
推荐阅读
- node.js - Mongoose (Typegoose) 扩展方法类型错误
- c++ - 调试多线程 CTest
- php - 为每个名字生成一个唯一的链接 - yii2
- arrays - 如何将多个 json 数据解析为 Angular 中的对象数组?
- reactjs - 我正在低于 nextjs 无服务器部署错误(运行 npx 无服务器)
- android - 如何以编程方式使用 android studio 4.2.1 将我的应用程序图标设置为一个信号通知
- keras - 层 time_distributed_30 的输入 0 与层不兼容:预期 ndim=5,发现 ndim=4。收到的完整形状:(无,无,无,无)
- python - 如何使用 Python 中的其他列值创建新列?
- python - 用于查找对象并在找到对象后停止的控制流
- excel - 满足某些条件时向 excel 列添加特定值