在Windows8中,我試圖使用GetBasicPropertiesAsync()來獲取新創建文件的大小。 有時,但並非總是如此(〜的25%的時間),這個調用給出了一個例外:爲什麼GetBasicPropertiesAsync()有時會拋出異常?
"Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))".
使用DotNetZip被創建的文件。我添加成千上萬的文件到需要幾分鐘的時間來運行歸檔:
using (ZipFile zip = new ZipFile())
{
zip.AddFile(...); // for thousands of files
zip.Save(cr.ArchiveName);
}
var storageFile = await subFolder.GetFileAsync(cr.ArchiveName);
// storageFile is valid at this point
var basicProperties = await storageFile.GetBasicPropertiesAsync(); // BOOM!
幾顯然隨機的東西似乎在降低異常的可能性:刪除的現有副本
- cr.ArchiveName在循環開始之前。
- 沒有觀看使用文件資源管理器
怪異的目錄,是吧?它聞起來可能是一個與File System Tunneling相關的錯誤,或者可能是DotNetZip在執行並保存資源(甚至可能重命名TEMP文件)後的一些內部緩存,即使ZipFile被丟棄後也是如此?
E_ACCESSDENIED最有可能表示正在使用的文件,雖然看着你的代碼我不知道爲什麼。也許你可以嘗試使用[Handle](http://technet.microsoft.com/en-US/sysinternals/bb896655)來幫助你診斷問題。 – 2013-03-15 05:41:41