У меня есть команда refre sh на странице Xamarin, и по какой-то причине Realm выдает RealmInvalidTransactionException
по завершении. В своей документации они написали:
Исключение, возникающее при попытке записи данных в Царство за пределами Транзакции или при попытке создать транзакцию в Царстве, которое открывается как только для чтения.
Это моя команда refre sh:
ICommand refreshCommand = new Command(async () =>
{
refreshView.IsRefreshing = true;
// Refresh everything
var w = summaryViewModel.Articles[0];
WebArticlesListView.RefreshCommand.Execute(null);
summaryViewModel.UpdateSummaryCommand.Execute(null);
// wait for articles to finish loading to stop loading indicator
await Task.Run(() =>
{
try
{
while (w == summaryViewModel.Articles[0]) ;
}
catch (ArgumentOutOfRangeException e)
{
while (summaryViewModel.Articles.Count < 5) ;
}
});
refreshView.IsRefreshing = false;
});
Во время отладки я заметил, что исключение выдается только после команды refre sh заканчивается (я пошёл шаг за шагом с отладчиком VS, и он был брошен сразу после того, как я нажал F10
[step] на последних фигурных скобках). Ни один объект не пытается получить доступ к БД после нее, и из моего кода ничего не происходит после того, как команда завершает свою работу, поэтому я не понимаю, почему возникнет исключение. Кроме того, трассировка стека исключительной ситуации [External Code]
основана на столбце Call Stack в отладчике VS.
Редактировать: я использую Xamarin для Android и iOS.