2016-12-09 13 views
1

Realmは、アクセスされたデータのバージョンで読み取りロックを保持しているため、異なるスレッド上でRealmに加えられた変更は、このRealmで参照されるデータを変更または削除しません。このメソッドを呼び出すと、むしろファイルXamarin Realm無効化メソッド

の成長よりも後の書き込みトランザクションで再利用するために、ディスク上で使用されるスペースを許可する、読み取りロックを解除するにObjC /スウィフトのRLMRealm invalidateのようXamarin.Realmで一致する関数があります。

これがバックログ項目であるか、C#ラッパーで必須(?)ではありませんか?

答えて

0

Realm.Close()とお考えください。参照: https://realm.io/docs/xamarin/latest/api/class_realms_1_1_realm.html#a7f7a3199c392465d0767c6506c1af5b4

レルムが閉じていない場合は閉じます。繰り返し安全に呼び出すことができます。これにより、ファイルが閉じられることに注意してください。同じスレッド上の同じデータベースへの他の参照は無効になります。

+0

ありがとうございます。インスタンスが内部スレッドで実行されているので、本当にRealmインスタンスを破棄したくありません(クローズは廃止されました)。https://github.com/sushihangover/RealmThread – SushiHangover

1

私はRealm.Refresh()を呼び出すと、回避策になると思います - それは現時点で持って、それをロックし、締固めのための古いバージョンを解放う最新バージョンに移動し、読み取りを放棄するレルムのインスタンスが発生します。

通常は最新バージョンあなたは上の実行スレッドが実行 CFRunLoopまたは ALooperを持っている場合は自動的に行われますが、専用のワーカースレッド上で、あなたが読み取りを進めるために自分で Refresh()を呼び出すための責任だろうに読み取りロックを動かす

ロック。

Invalidate()に問題をオープンしてください。Refresh()が機能しない場合は、

関連する問題