У меня есть небольшое приложение uwp, работающее с шаблоном mvvm, которое должно загрузить большой JSON-файл в какой-то момент во время выполнения.Я хочу напечатать окно сообщения с неопределенным управлением кольцом прогресса, пока десериализация не будет завершена.Я думал о том, чтобы дождаться результата JsonConvert.DeserializeObject
в асинхронном режиме и тем временем напечатать окно сообщения.Примерно так:
MyClass Deserialize(string text, JsonSerializerSettings settings)
{
MyClass result = JsonConvert.DeserializeObject<MyClass>(text, settings);
}
private async void LoadingScreenAsync()
{
var dialog = new MessageDialogWithFancySpinningRing(); // I actually don't know how to do it though ;)
await dialog.ShowAsync();
}
var deserializeTask = Deserialize(MyText, MySettings);
Var LoadingScreenTask = LoadingScreenAsync();
MyClass Result = await deserializeTask;
await dialog.ShowAsync();
// ... continue with result
Хотя я еще не пробовал, потому что из того, что я прочитал, я подумал, что это не сработает, поскольку Deserialize
и JsonConvert.DeserializeObject
не являются асинхронными методами,Похоже, мне нужно было бы запустить десериализацию в другом потоке для того, что для такой простой вещи выглядит большим трудом.
Есть идеи?