我们发现在已更新到1709的系统上使用SHFileOperation删除文件夹的速度非常慢。看起来有些内容与通用Windows应用程序相关,导致了这种情况。
此代码:
sFileOp.wFunc = FO_DELETE;
sFileOp.pFrom = buf;
sFileOp.fFlags = FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOERRORUI;
if(SHFileOperation(&sFileOp))
传递类似“C:\ Jobs \ Job1”的路径(是的,双重空终止),文件夹中有少量文件 - 比如2或3 - 在Windows 7和Windows 10 1511上以毫秒为单位运行。 Windows 10 1709需要1到3秒。
在调用SHFileOperation之后和返回之前,我们在Visual Studio 2013输出窗口中注意到这些消息中的3个或4个:
onecoreuap \ shell \ windows.storage \ sharedstoragesources \ util.cpp(2831)\ windows.storage.dll!7650BF24 :(来电者:765D88E4)ReturnHr(1)tid(1bb0)80070490找不到元素。< / em>的
这是一个使用VS2013构建的Win32,x86应用程序。这发生在我们已经发货超过18个月的版本中。要回顾1511和Windows 7上预期的版本运行,在最后两个Windows 10更新上要慢得多。不知何故,我们似乎已经与通用Windows应用程序DLL纠缠在一起了。我们如何避免这种情况?