2

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

我创建了一个代码粘贴,所以你可以看到我的代码。

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 中执行此操作。如果我需要提供任何其他系统信息,请告诉我。

4

2 回答 2

5

好的,这就是我注意到的。在文件中,vehicleViewModel.cs您一个接一个地打电话。这两种方法都被声明为这意味着fire and forget。我的想法是,当 SaveList 试图保存时,GetList 试图同时读取一个文件。我试过你的代码,我也得到了同样的错误。尝试将 SaveList 和 GetList 方法更改为,然后使用:SaveList();GetList();async voidasync Taskawait

await SaveList();
await GetList();

这对我有用。

于 2012-09-06T12:56:03.783 回答
0

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

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

于 2015-04-17T13:44:28.433 回答