Я получаю System.UnauthorizedAccessException при загрузке XML с диска
Я работаю над приложением магазина Windows 8 XAML / C #. Я пытаюсь загрузить XML изWindows.Storage.ApplicationData.Current.LocalFolder
вXDocument
несколько раз за время существования приложения. Тем не менее, я получаюSystem.UnauthorizedAccessException
когда я пытаюсь загрузить файл. Вот мои методы:
Чтобы добавить в XML:
private async void AddCategoryButton_Click(object sender, RoutedEventArgs e)
{
XDocument CategoryListXDoc = await LoadXmlFromLocalFolderAsync("Categories.xml");
CategoryListXDoc.Element("CategoryList").Add(
new XElement("Category", new XAttribute("Id", Guid.NewGuid()), AddCategoryTextBox.Text));
SaveXDocToLocalFolderAsync("Categories.xml", CategoryListXDoc);
}
Просто для отладки:
private async void Button_Click_2(object sender, RoutedEventArgs e)
{
XDocument TempXDoc = await LoadXmlFromLocalFolderAsync("Categories.xml");
Debug.WriteLine(TempXDoc);
}
Методы загрузки и сохранения:
private async Task LoadXmlFromLocalFolderAsync(string FileName)
{
var LocalFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile CategoryListFile = await LocalFolder.GetFileAsync(FileName);
var stream = await CategoryListFile.OpenStreamForReadAsync() as Stream;
XDocument TempXDoc = XDocument.Load(stream);
stream.Flush();
return TempXDoc;
}
private async void SaveXDocToLocalFolderAsync(string Filename, XDocument XDocToSave)
{
var LocalFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
StorageFile CategoryListFile = await LocalFolder.CreateFileAsync(Filename, CreationCollisionOption.ReplaceExisting);
var stream = await CategoryListFile.OpenStreamForWriteAsync() as Stream;
XDocToSave.Save(stream);
stream.Flush();
}
Если я уволитьClick
события неоднократно, исключение выдается. Там'Нет конкретного сценария. Иногда возникает ошибка, иногда нетт. Куда я иду не так? Я'Я довольно новый сasync
а такжеawait
вещи.