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 ) );
}
私が再現/テストできる、この例外が予想される特定のシナリオはありますか?
これがシェル ライブラリのバグであると仮定すると、よりクリーンな「解決策」を望んでいますが、例外をキャッチして操作を数回再試行することができます。