我正在尝试为Win8编写和读取本地存储。使用帮助器我能够成功写入我的机器,但是读取.xml文件会给我一个:mscorlib.dll中出现 System.UnauthorizedAccessException 错误
我创建了一个代码段,以便您可以看到我的代码。
代码在这里失败:
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中这样做。如果我需要提供任何其他系统信息,请告诉我。
答案 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); });