Realm DB - исключение выдается без видимой причины - PullRequest
0 голосов
/ 02 мая 2020

У меня есть команда 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...