winrt - System.UnauthorizedAccessException

web*_*ad3 2 windows-8 windows-runtime

我正在尝试为Win8编写和读取本地存储.使用帮助器我能够成功写入我的机器,但读取.xml文件给我一个:mscorlib.dll错误中发生System.UnauthorizedAccessException

我创建了一个codepaste,以便您可以看到我的代码.

http://codepaste.net/k9mht5

代码在这里失败:

public async static Task<object> LoadData(string path, System.Type type)
{
    var _Folder = Windows.Storage.ApplicationData.Current.LocalFolder;

    try
    {
        var _File = await Folder.GetFileAsync(path);

        using (IInputStream inStream = await _File.OpenSequentialReadAsync())

        {
            // Deserialize the Session State
            XmlSerializer x = new XmlSerializer(type);
            return x.Deserialize(inStream.AsStreamForRead());
        }
    }
    catch (Exception ex)
    {
        MessageDialog dialog = new MessageDialog(ex.Message.ToString());
        dialog.ShowAsync();            
        return null; 
    }
}
Run Code Online (Sandbox Code Playgroud)

特别是在这一行:

 using (IInputStream inStream = await _File.OpenSequentialReadAsync())
Run Code Online (Sandbox Code Playgroud)

如果你对我做错了什么有任何想法,它会帮助我很多.
我在Release Preview中这样做.如果我需要提供任何其他系统信息,请告诉我.

Ale*_*der 5

好的,这是我注意到的.在文件中,vehicleViewModel.cs你打电话SaveList();,GetList();一个接一个.这两种方法都被声明为async void这意味着火灾和忘记.我的想法是,当SaveList试图保存时,GetList正在尝试同时读取一个文件.我尝试了你的代码,我也得到了同样的错误.尝试更改SaveList和GetList方法async Task,然后使用await:

await SaveList();
await GetList();
Run Code Online (Sandbox Code Playgroud)

这对我有用.