1709 に更新されたシステムでは、SHFileOperation を使用したフォルダーの削除が非常に遅いことがわかっています。ユニバーサル Windows アプリに関連して、これを引き起こしている何かがあるようです。
このコード:
sFileOp.wFunc = FO_DELETE;
sFileOp.pFrom = buf;
sFileOp.fFlags = FOF_SILENT|FOF_NOCONFIRMATION|FOF_NOERRORUI;
if(SHFileOperation(&sFileOp))
「C:\Jobs\Job1」のようなパス (はい、二重に null で終了) をフォルダー内の少数のファイル (たとえば 2 または 3) に渡し、Windows 7 および Windows 10 1511 でミリ秒単位で実行されます。 Windows 10 では 1709 1 ~ 3 秒かかります。
Visual Studio 2013 の [出力] ウィンドウに表示されるのは、SHFileOperation が呼び出されてから戻る前に、これらのメッセージのうちの 3 つまたは 4 つです。
onecoreuap\shell\windows.storage\sharedstoragesources\util.cpp(2831)\windows.storage.dll!7650BF24: (呼び出し元: 765D88E4) ReturnHr(1) tid(1bb0) 80070490 要素が見つかりません。
これは、VS2013 でビルドされた Win32、x86 アプリです。これは、18 か月以上にわたって出荷されてきたリリースで発生します。要約すると、バージョンは 1511 と Windows 7 で期待どおりに実行されますが、最後の 2 つの Windows 10 更新では遅すぎます。どういうわけか、ユニバーサル Windows アプリの DLL と絡み合っているようです。どうすればこれを回避できますか?