Я нахожусь в своем первом приложении для Windows Store, и у меня возникла проблема с десериализацией/загрузкой данных приложения.Deserialization Async File
Я использую JSon для сериализации объекта класса для строки, затем я сохраняю его в папке Local Application Application.
Когда пришло время загрузить данные, один раз за время, когда загрузка не выполняется во время выполнения, и данные не загружаются. и мои классы создаются как новые классы.
Но когда я запускаю свой код, сделайте шаг в режиме отладки. работа Desirialization работает нормально, и мои классы правильно загружены.
Я думаю, что проблема исходит из моей асинхронной реализации. но я не могу сказать, где.
Может кто-нибудь мне помочь?
Сохранить процедура: Процедура
public virtual void Save()
{
var data = JsonConvert.SerializeObject(this);
WriteTotextFileAsync("Cashier.Data.Config", data);
}
public static async void WriteTotextFileAsync(string fileName, string contents)
{
var folder = ApplicationData.Current.LocalFolder;
var file = await folder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);
await FileIO.WriteTextAsync(file, contents);
}
Нагрузка:
private async void LoadConfig()
{
string data;
if (Config == null)
{
data = await ReadTextFileAsync("Cashier.Data.Config");//.ConfigureAwait(false);
if (data != null && data.Length > 0)
try
{
System.Diagnostics.Debug.WriteLine(data);
Config = JsonConvert.DeserializeObject<Data.Config>(data);
System.Diagnostics.Debug.WriteLine(data);
}
catch (Exception ex)
{
var dlg = new MessageDialog("Desirialization erreur" + Environment.NewLine + ex.Message);
dlg.ShowAsync();
Config = new Config();
}
else
{
System.Diagnostics.Debug.WriteLine("Config = new Config();");
Config = new Config();
}
}
}
public static async Task<string> ReadTextFileAsync(string path)
{
var folder = ApplicationData.Current.LocalFolder;
try
{
var file = await folder.GetFileAsync(path);
var value = await FileIO.ReadTextAsync(file);
return value;
}
catch (System.IO.FileNotFoundException ex)
{
return string.Empty;
}
}
Спасибо за ваш ответ, у меня есть async и Task, как вы предлагаете, но это не изменило поведения. Где точнее - лучшее место для вызова процедуры настройки сохранения? В событии «OnSuspending» App.xaml.cs? – Hugo