2016-12-03 57 views
0

想知道爲什麼「DeleteAsync」不會刪除文件,但「File.Delete」會執行此操作。誰可以給我解釋一下這個?起初我認爲該文件是打開的,但如果文件打開「File.Delete」不應該刪除它也...或?「DeleteAsync」和「File.Delete」之間的區別以及爲什麼「DeleteAsync」不刪除文件?

private static async void FILESYSTEM_RemoveVideoPosterIfExist(string posterFileNameOnStorage) 
{ 
    IStorageItem videoPosterIStorageItem = await ApplicationData.Current.LocalFolder.TryGetItemAsync(SYSTEM_UserVideoPosterFolder + @"\" + DATABASE_SelectedUserInformation.UserName + "." + SYSTEM_UserPosterFolderExtension + @"\" + posterFileNameOnStorage); 
    if (videoPosterIStorageItem != null) 
    { 
     try 
     { 
      //Why this doesn't delete file... 
      await videoPosterIStorageItem.DeleteAsync(StorageDeleteOption.PermanentDelete); 
     } 
     catch 
     { 
      //But this one will delete file. 
      StorageFolder applicationStorageFolder = await ApplicationData.Current.LocalFolder.GetFolderAsync(SYSTEM_UserVideoPosterFolder + @"\" + DATABASE_SelectedUserInformation.UserName + "." + SYSTEM_UserPosterFolderExtension + @"\"); 
      File.Delete(applicationStorageFolder.Path + @"\" + posterFileNameOnStorage); 
     } 
    } 
} 
+2

如果它拋出一個異常,你需要查看異常,以便找出爲什麼它不起作用。另外,除非這是一個事件處理程序,否則不應該使用'async void'。 –

+0

你能否簡要解釋我爲什麼不應該使用異步void而不是Task?我很欣賞答案。 – Weissu

+0

哦,我剛剛拿到了! – Weissu

回答

相關問題