我每次执行查询时都会调用 Realm realm = Realm.GetInstance(config); 。在不调用 realm.Close(); 的情况下让它在整个应用程序运行中打开是否安全?
答案 0 :(得分:2)
首先,Close
已过时,请使用Dispose
。
[Obsolete("This method has been deprecated. Instead, dispose the realm to close it.")]
public void Close()
如果您要在每个查询中创建新的Realm
,真的需要尽快Dispose
。因为它保持读取版本/锁定你所查询的内容,消耗内存以及由于其他Realm实例写入同一个Realm文件而导致Realm文件大小膨胀的可能性。
using (var realm = Realm.GetInstance(config))
{
// Perform a query and do something with the results
}
或
var realm = Realm.GetInstance(config);
// At some future point:
realm.Dispose();
现在,在您的应用的整个生命周期内重新使用 相同的 Realm实例很好,但是当您的应用关闭时,您真的应该致电Dispose
(由于用户交互或操作系统将其关闭......)。
作为旁注,如果您要创建多个Realm
实例,因为等待Realm
在不同的线程上使用Tasks
实例,您可以查看{{3 }}
用于在专用Realm线程上运行命令的Action / Task Message Pump。
免责声明:RealmThread
是我的一个项目。