UWP query.GetItemCountAsync-在映射的网络驱动器上失败 '库,驱动器或媒体池为空 来自HRESULT的异常:0x800710D2

问题描述

如果我使用下面的代码枚举映射的网络驱动器,尽管它需要很长时间并且消耗5 GB内存,但它可以完成工作,没有错误

var files = await folder.GetFilesAsync(CommonFileQuery.OrderByName);

如果我使用查询系统获取在本地磁盘上运行良好的文件数,则在同一网络映射的驱动器上它将失败。

var fileTypeFilter = new List<string>();
var queryOptions = new QueryOptions(CommonFileQuery.OrderByTitle,fileTypeFilter);
var query = folder.CreateFileQueryWithOptions(queryOptions);
var x2 = await query.GetItemCountAsync();

错误是“ System.Exception:'库,驱动器或媒体池为空。(HRESULT的异常:0x800710D2)'”-根本没有用。是的,我在Google上进行了搜索,并获得了巨大的5个结果。

任何关于为什么会这样的想法?也许是因为本地驱动器已编入索引,而网络未编入索引,但这使此查询在任何地方都毫无意义,因为您不能保证文件夹已编入索引。

解决方法

我弄清楚了,它实际上已经记录在案,但错误没有。

最初的问题是为什么我有时使用以下命令会出错:

var fileTypeFilter = new List<string>();
var queryOptions = new QueryOptions(CommonFileQuery.OrderByTitle,fileTypeFilter);
var query = folder.CreateFileQueryWithOptions(queryOptions);
var x2 = await query.GetItemCountAsync();

答案是使用“ CommonFileQuery.OrderByTitle”,它在网络驱动器上不起作用。必须将其替换为“ CommonFileQuery.OrderByName”,然后它才能工作。

当然,性能仍然很糟糕,并且Runtime Broker的内存消耗令人震惊。我不同意消耗5GB内存而不释放它是可以接受的。基本上,即使在.net 5上的Win32应用程序中,我也无法使用新的WinRT StorageFile / Folder。

但是问题已经回答;我们希望.net 6和WinRT可以解决这个问题:)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...