Невозможно удалитьRealm после вызова .Dispose () - PullRequest
0 голосов
/ 16 марта 2020

Загрузка в мои данные

Uri.TryCreate(realmPath, UriKind.Relative, out var outPathUri);
RealmConfigurationBase configuration = new FullSyncConfiguration(outPathUri, _currentUser, _realmFile)
{
    ObjectClasses = typesInSelectedRealm,
    SchemaVersion = 1
};

_realmInstance = Realm.GetInstance(configuration);

if(_realmInstance != null) _realmInstance.RealmChanged += LoadDataOnChange;

Попытка скопировать файл .realm с таким же форматом с USB-накопителя

if(_realmInstance != null) 
{
    _realmInstance.RealmChanged -= LoadDataOnChange; // figure it's good to clear all external references to Realm object
    _realmInstance.Dispose();
    GC.Collect();
    Thread.Sleep(1000); // both of these are me trying to just make darn sure that everything is cleaned up and has had enough time to do so
    Realm.DeleteRealm(_realmInstance.Config); // error
}

Сгенерированная ошибка: The process cannot access the file '...\test.realm' because it is being used by another process.

Я уже видел эту ветку , которая наиболее близка к моей проблеме и возможному решению, хотя она была для IOS, поэтому я не уверен, насколько она применима к моей ситуации. .

1 Ответ

0 голосов
/ 06 мая 2020

Скорее всего, область все еще используется потоком синхронизации - например, если вы добавили в него много данных и они еще не были загружены. Что вы можете сделать, это дождаться завершения загрузки, позвонив по номеру:

await _realmInstance.GetSession().WaitForUploadAsync();
_realmInstance.Dispose();
// wait a second
// delete

или вручную остановив сеанс (но возможно, что не все данные были загружены):

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