Различия между "DeleteAsync" и "File.Delete" и почему "DeleteAsync" не удаляет файл?
Хотите знать, почему "DeleteAsync" не удаляет файл, но "File.Delete" сделает это. Может кто-то объяснить это мне? Сначала я думаю, что файл открыт, но если файл открыт, "File.Delete" также не должен удалять его или...?
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);
}
}
}
1 ответ
Решение
Вероятно, причина в том, что нет встроенной функции для асинхронного удаления файла. Управляемые API обычно являются обертками вокруг неуправляемых.
Взгляните на это
Почему в.net нет асинхронного удаления файла?
FileInfo fi = new FileInfo(fileName);
await fi.DeleteAsync(); // C# 5
fi.DeleteAsync().Wait(); // C# 4
Надеюсь это поможет!!