私は Windows 8 XAML/C# ストア アプリに取り組んでいます。アプリの有効期間中にXMLWindows.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<XDocument> 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
です。