Различия между "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

Надеюсь это поможет!!

Другие вопросы по тегам