C# xamarin中的处理域
我正在使用C# xamarin中的处理域,c#,xamarin,realm,realm-mobile-platform,C#,Xamarin,Realm,Realm Mobile Platform,我正在使用Xamarin.Forms中的Realm构建移动应用程序,对关闭Xamarin中的Realm有一些疑问 以下是更新域中记录的方法 public void updateData(EventType e) { Realm realm = Realm.GetInstance(); realm.WriteAsync(tempRealm => {
Xamarin.Forms
中的Realm
构建移动应用程序,对关闭Xamarin中的Realm有一些疑问
以下是更新域中记录的方法
public void updateData(EventType e)
{
Realm realm = Realm.GetInstance();
realm.WriteAsync(tempRealm =>
{
tempRealm.Add(e.response, true);
});
realm.Dispose();
MessagingCenter.Send<IMessage, EventType>(this, RestApi.UI_EVENT, e);
}
public void updateData(事件类型e)
{
Realm Realm=Realm.GetInstance();
realm.WriteAsync(tempRealm=>
{
tempRealm.Add(e.response,true);
});
realm.Dispose();
发送(此,RestApi.UI_事件,e);
}
realm.GetInstance()时,是否需要调用realm.Dispose()代码>
await
againtsrealm.WriteAsync
作为异步方法李>
我们是否需要每次调用realm.GetInstance时都调用realm.Dispose()
对。最终,当您不再使用领域实例时,您应该对它们进行处置。这将释放任何消耗的资源(本机和托管)
通常,我会在应用程序的生命周期内(遵循每个平台的应用程序生命周期)打开一个UI线程实例。i、 e.我将这个领域
实例视为一个HttpClient
实例,一个可以从中打开其他实例的应用程序级单例。现在,当我通过服务、广播接收器、推送更新等更新数据库时,我在后台线程上打开并处理实例
注意:请记住,如果您在后台线程上,并且在该线程上获得相同RealmConfigurationBase
的多个领域实例,那么它们实际上都是相同的领域实例(Realm.IsSameInstance
)。您可以对每个实例调用Dispose,但在该线程上的所有实例都被释放之前,不会实际关闭(Realm.IsClosed
)该实例
WriteAsync是否负责关闭/处理域
对。您不希望对传递到WriteAsync
lamba函数中的领域实例调用Dispose
事实上,如果您这样做,您将收到一个System.ObjectDisposedException
,因为Realm已经用事务块包装了lamba,并且您已经在提交或回滚事务之前处理了Realm实例
我是否必须对realm.WriteAsync使用wait作为异步方法
关于fire&forget异步方法调用,请参考许多其他SOs,即: