不知道界面显示和读磁盘的操作是不是完全无关的

昨天我做大量硬盘操作,同时进行:往FTP上备份数据、同时执行多个对文件夹计算MD5任务、顺便以MB级别的速度下载数据。结果是Listary挺卡的,界面打开就很慢,我就没用工具条搜索什么,把Listary临时退出了。

非常抱歉我记不清是呼出工具条卡了还是搜索的时候卡了,昨天脑子模糊了,但我能明确的记得是,通知区域的Listary图标鼠标右击也出不来菜单,这导致我最终是去任务管理器里手动kill的。

当时文件管理器也卡,我Win+E正常打开的是”计算机“,会显示分区列表,结果当时计算机窗口要等半分多钟到一分钟才能正常创建,而且是我多次按Win+E后,等了很久一下子弹出来好几个窗口。

但当时任务管理器是秒开,一些cmd窗口也能很快出来。所以我想是不是Listary的主界面会涉及某种低优先级的读磁盘操作,结果读磁盘本身卡了,导致界面出不来呢?如果是,我希望能把读磁盘的操作完全分离到新的线程中。

注:Win8.1 x64,单机械硬盘。

补充:我之前遇到一个问题,是Listary工具条的搜索,会因为要读文件图标,而激活原本待机状态的硬盘,这里的读图标的操作不知道是不是用独立线程完成的。
补充2:如果搜索功能要等待监控磁盘文件变化的功能完成处理才进行搜索,我估计在磁盘负载重的时候也会卡的。

Listary的UI线程(主线程)不进行磁盘操作,读取图标、更新索引之类的任务全部是在后台线程中进行的。

同时进行多个MD5计算应该会占满CPU,比较可能是这个原因。

但我看了任务管理器,CPU占用只有10%左右,而且我机器是Intel i5-4590 双核4线程的,16G内存。

会不会是某个系统API内部在一定条件下(比如缓存未命中)去读硬盘?不过我的页面文件在硬盘上只是512MB

有可能,因为Listary会等待资源管理器及其他类似操作完成。

楼主提的建议很好 ,我也觉察到了,很有体会,我的机子性能不错,前阵子借调硬盘出去,就临时用了以前的老硬盘80G,IDE接口,系统启动被拖慢了,通知区域listary图标显示时呼出工具条搜索时,一直显示转圈圈,也卡在那儿不动了.但启动任务管理器,win+E打开资源管理器,都很正常.不想等于是就在任务管理器kill了listary,重启listary.我不知道是什么原因,看到楼的写的体验,也有相同的感受.

如果你是刚换了硬盘后,第一次呼出工具条,有可能是Listary还在第一次检索磁盘内容。

不知道创建/更新索引的时候会不会把检索索引的线程阻塞掉

这个跟LZ的情况不一样。转圈说明Listary仍然在正常工作,并未停止响应。应该是更换硬盘后在重建索引,等一会就好了。

好像我的电脑 讯雷也是这样,在下载东西的时候。。。 而且打开资源管理器,或按一下快捷键,反应很慢,如果拔掉usb接口又突然恢复了。反正和讯雷下载和usb鼠标有关系,因为之前一直没什么问题,当然了,之前也下载过,但就是前几天发过一个同样的帖子遇到这样的问题。

好吧,我今天确认了,是CPU/硬盘资源被占满导致的。

Listary的默认优先级是不是“”低于正常“”?我调到“正常“后就好多了。

我觉得吧,UI进程的优先级不能太低了。甚至可以考虑把listary.exe主进程的主线程优先级往上调,索引构建、检索之类的操作才可能需要额外降低优先级。就是不太清楚Windows对线程的优先级有多大程度是可自定义的。

注:我当时在跑大文件MD5,机械硬盘满速,达到了读150MB/s左右,CPU占了~20%。listary的优先级通过任务管理器调到正常那一刻,MD5的进度是92%,之后磁盘仍高速读了几个G,但listary的命令框之类的确实都正常了。

一个有趣的现象是:
任务管理器的进程详情列表,用listary搜索时一开始也卡了,而且多操作了几次(并调整其优先级到高于正常)后把listary.exe卡崩溃了,不过其它辅助进程还好。我重开listary后,优先级调到正常,发现在任务管理器里用listary搜列表的响应速度就变得还可以了。似乎列表搜索的线程的优先级不服从所注入的进程的