winrt - System.UnauthorizedAccessException

时间:2012-09-06 11:22:51

标签: windows-8 windows-runtime

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

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

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; 
    }
}

特别是在这一行:

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

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

2 个答案:

答案 0 :(得分:5)

好的,这是我注意到的。在文件vehicleViewModel.cs中,您依次致电SaveList();GetList();。这两种方法都声明为async void,这意味着触发并忘记。我的想法是,当SaveList试图保存时,GetList试图同时读取一个文件。我尝试了你的代码,我也得到了同样的错误。尝试将SaveList和GetList方法更改为async Task,然后使用await

await SaveList();
await GetList();

这对我有用。

答案 1 :(得分:0)

使用调度程序,它将解决您的问题

  

await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.High, () => { // Your UI update code goes here! _dialogService.ShowMessage(rdm.ErrorMessage); });