3

Windows 7 のShell Librariesを使用して、既存のライブラリを上書きし、 Windows API Code Pack 1.1から入手できるマネージ ラッパーを使用して新しいパスを追加しています。

時々、これを再現できないようですCOMException。ライブラリにパスを追加しているときに a がスローされます。

System.Runtime.InteropServices.COMException (0x80070497): Unable to remove the file to be replaced. (Exception from HRESULT: 0x80070497)
   at Microsoft.WindowsAPICodePack.Shell.IShellLibrary.Commit()
   at ... (local code from here on out)

コードは非常に簡単です。メソッドでエラーがスローされますAdd

using ( var activityContext = new ShellLibrary( LibraryName, true ) )
{
    Array.ForEach( dataPaths, p => activityContext.Add( p.LocalPath ) );
}

私が再現/テストできる、この例外が予想される特定のシナリオはありますか?

これがシェル ライブラリのバグであると仮定すると、よりクリーンな「解決策」を望んでいますが、例外をキャッチして操作を数回再試行することができます。

4

0 に答える 0