【问题标题】:uwp mostrecentlyusedlist addition causes COM type exceptionuwp mostrecentlyusedlist 添加导致 COM 类型异常
【发布时间】:2018-09-22 14:54:48
【问题描述】:

堆栈跟踪

" 在 Windows.Storage.AccessCache.StorageItemMostRecentlyUsedList.Add(IStorageItem 文件、字符串元数据、RecentStorageItemVisibility 可见性)\r\n 在 FluentVideoPlayer.Helpers.FileHelper.c__DisplayClass7_0.b__0()\r\n 在 Microsoft.Toolkit .Uwp.Helpers.DispatcherHelper.c__DisplayClass10_0`1.b__0()"

我正在尝试将 StorageFile 添加到 MostRecentlyUsedList,结果出现此异常。

例外

HRESULT E_FAIL 已从对 COM 组件的调用中返回

代码

internal async static Task AddToHistory(StorageFile fileToBeAdded) => await DispatcherHelper.ExecuteOnUIThreadAsync(() => StorageApplicationPermissions.MostRecentlyUsedList.Add(fileToBeAdded, "", RecentStorageItemVisibility.AppAndSystem));

我有这个静态方法可以在静态类中使用,所以我可以从应用程序中的任何页面调用它。我可以验证 StorageFile 对象不为空且完美我还尝试使用 DispatcherHelper 来解决它,正如您在代码中看到的那样,但是无论有没有它,两种情况都会发生异常。

更新

我也尝试添加到 FutureAccessList 而不是 MostRecentlyUsedList 并且在这两种情况下我都遇到相同的错误

更新 2

正常访问列表不会导致任何错误,就像我可以使用以下代码访问它一样

var mlist = StorageApplicationPermissions.MostRecentlyUsedList;
var entries = mlist.Entries;

只有在我尝试向其中添加存储文件时才会出现错误。

【问题讨论】:

    标签: c# xaml uwp comexception storagefile


    【解决方案1】:

    问题出在部分 StorageFiles 中,我实际上是根据以下博客文章从 KnownFolders.VideoLibrary 查询文件。

    https://blogs.msdn.microsoft.com/adamdwilson/2017/12/20/fast-file-enumeration-with-partially-initialized-storagefiles/

    因此,当我们使用以下索引选项时,它实际上会为我们初始化部分存储文件,当我们尝试将其添加到最近使用的列表或 futureacceslist 时会导致异常

    IndexerOption = IndexerOption.OnlyUseIndexerAndOptimizeForIndexedProperties
    

    所以为了解决这个问题,我现在使用 IndexerOption.UseIndexerWhenAvailable 现在我没有遇到任何异常,但我当然会牺牲部分存储文件的速度。令人失望的是,当尝试使用完整存储文件完成工作时,它应该根据博客文章自动将部分存储文件初始化为完整存储文件。但不幸的是,情况并非如此。

    【讨论】:

    • 感谢您报告此 Touseef。您是对的 - Windows 如何在内部处理部分 StorageFiles 存在错误。目前的另一个解决方法是使用: StorageFile.GetFileFromPathAsync(fileToBeAdded.Path) 为要添加到 MRU 或 FAL 的文件创建新的 StorageFile 对象。您仍然可以进行快速枚举,但将文件添加到 MRU 会变慢
    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2014-02-16
    • 1970-01-01
    • 2011-02-10
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多