Универсальное приложение для платформы Windows зависает при использовании защищенного хранилища в Xamarin Essentials

#xamarin #uwp #xamarin.uwp

#xamarin #uwp #xamarin.uwp

Вопрос:

Я добавляю безопасное хранилище с помощью Xamarin Essentials, но приложение продолжает зависать (без ошибок) каждый раз, когда я пытаюсь сохранить на универсальной платформе Windows (UWP). Кто-нибудь может объяснить, почему оно зависает?

Примечание: У меня это работает на устройствах Android без проблем.

 try
{
   await SecureStorage.SetAsync("username", Username.Text);
   await SecureStorage.SetAsync("password", Password.Text);
}
catch (Exception){}
  

Согласно этой форме, перед использованием защищенного хранилища в UWP настройка не требуется.

Комментарии:

1. Я протестировал ваш код, но не смог воспроизвести вашу проблему, пожалуйста, убедитесь, что вы установили Xamarin Essentials пакет nuget для вашего проекта uwp-клиента и целевую версию uwp выше 16299. для получения более подробной информации, пожалуйста, обратитесь к этому документу .

Ответ №1:

Поток был заблокирован, поэтому мне пришлось добавить Device.BeginInvokeOnMainThread , поэтому код в конечном итоге выглядит следующим образом:

 try
{
  Device.BeginInvokeOnMainThread(async () =>{
   await SecureStorage.SetAsync("username", Username.Text);
   await SecureStorage.SetAsync("password", Password.Text);
  });
}
catch (Exception){}
  

Ответ №2:

У меня была похожая проблема. Код работал для iOS и Android, но не работал для UWP (блокирование приложения). Статья об асинхронности и предотвращении взаимоблокировок в C # проливает свет на эту проблему. В нем объясняются причины, по которым приложение могло быть заблокировано, и как правильно с этим справиться.