前提条件:Windows 8 Pro RTM + VS2012 Ultimate RTM
1.次のコードはApp.xaml.csにあります。ユーザーがこのアプリを初めて開くと、アプリはxmlを作成します。
private async void CheckXML()
{
try
{
StorageFile file1 = await ApplicationData.Current.LocalFolder.GetFileAsync("BetterTask.xml");
}
catch (FileNotFoundException)
{
CreateXML();
}
}
private async void CreateXML()
{
StorageFile file2 = await ApplicationData.Current.LocalFolder.CreateFileAsync("BetterTask.xml", CreationCollisionOption.ReplaceExisting);
using (var writeStream1 = await file2.OpenStreamForWriteAsync() as Stream)
{
XDocument doc1 = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("tasks",
new XElement("task",
new XElement("title", "Wish you enjoy this App :)"),
new XElement("due", DateTime.Now.Date.ToString("yyyy/MM/dd")))));
doc1.Save(writeStream1);
await writeStream1.FlushAsync();
}
}
2.アプリが起動すると、MainPage.xamlのOnNavigatedToイベントで、xmlを読み取ってデータを取得します。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
ReadTasks("all");
ShowTime();
}
private async void ReadTasks(string action)
{
StorageFile file1 = await ApplicationData.Current.LocalFolder.GetFileAsync(xmlfilename);
var ReadStream1 = await file1.OpenStreamForReadAsync() as Stream;
XDocument doc1 = new XDocument();
doc1 = XDocument.Load(ReadStream1);
ReadStream1.Dispose();
.......
}
.3。何が起こるか:アプリが最初に起動したとき、次のコードはエラーをスローします:
var ReadStream1 = await file1.OpenStreamForReadAsync() as Stream;
エラー: UnauthorizedAccessExceptionはユーザーコードによって処理されませんでしたアクセスが拒否されました。(HRESULTからの例外:0x80070005(E_ACCESSDENIED))
I check the folder, the xml file is created when the error happen.
.4。さらに何か:アプリを再度開いても何も起こらず、魅力のように機能します。理由はわかりませんが、このアプリはWin8RPとVS2012RCでうまく機能します。私は何も変更しませんが、VC2012RTMを使用してWin8RTMで実行できないのはなぜですか