5

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 と絡み合っているようです。どうすればこれを回避できますか?

4

0 に答える 0