类 RecoverOrDiscardUnsyncedChangesHandler
一种客户端重置策略,尝试自动恢复任何未同步的更改。 如果失败,此处理程序将改用丢弃未同步更改策略。
命名空间: Realms 。同步。 ErrorHandling
程序集:Realm.dll
语法
public sealed class RecoverOrDiscardUnsyncedChangesHandler : ClientResetHandlerBase
备注
当配置为恢复的客户端在服务器上被标记为“不允许执行自动恢复”时,自动恢复将失败。 在这种情况下,此策略将回退到丢弃未同步的策略。 重申一下它的作用:它会丢弃所有未同步的本地更改,并使用远程同步服务器上可用的最新域。有关自动合并规则的更多信息,请参阅客户端重置 - .NET SDK 。 自动恢复机制会创建写事务(write transaction),这意味着发生的所有更改都会通过标准 Realm 的更改通知正确传播。RecoverOrDiscardUnsyncedChangesHandler策略提供四个回调: OnBeforeReset 、 OnAfterRecovery 、 OnAfterDiscard和ManualResetFallback 。 OnBeforeReset ,在客户端重置发生之前调用。 当且仅当自动客户端重置成功时,才会调用OnAfterRecovery 。 如果客户端重置失败,则永远不会调用回调。当且仅当自动客户端重置失败且丢弃未同步重置成功时,才会调用OnAfterDiscard 。 如果丢弃未同步客户端重置失败,则永远不会调用回调。 每当任一恢复策略发生错误并且系统需要回退到手动模式时,都会调用ManualResetFallback 。 使用此策略的总体建议是,仅在以下情况下才应考虑使用这三个可用的回调:
- 需要(在OnBeforeReset中)通知用户,由于合并或完全丢弃未同步的本地更改,未同步数据的传入潜在数据丢失
- 需要(在OnAfterRecovery或OnAfterDiscard 中)通知用户重置过程已完成
- 数据敏感应用程序的高级使用案例,其中开发者希望以最适当的方式恢复未同步的数据
- 在客户端重置发生之前(在OnBeforeReset中)备份整个域。例如,此类备份可用于恢复未同步的数据(请参阅 3。)
属性
| 编辑本页 查看源代码ManualResetFallback
获取或设置发生导致操作无法完成的错误时触发的回调,例如发生破坏性模式更改时。
声明
public ClientResetHandlerBase.ClientResetCallback? ManualResetFallback { get; set; }
属性值
类型 | 说明 |
---|---|
ClientResetHandlerBase 。 ClientResetCallback | 如果自动客户端重置处理失败,则调用回调。 |
OnAfterDiscard
获取或设置回调,该回调指示刚刚发生的客户端重置的丢弃未同步更改回退。
声明
public ClientResetHandlerBase.AfterResetCallback? OnAfterDiscard { get; set; }
属性值
类型 | 说明 |
---|---|
ClientResetHandlerBase 。 AfterResetCallback | 在客户端重置后立即调用的回调,该重置会回退以丢弃未同步的更改。 |
备注
当尝试使用自动恢复进行客户端重置,但服务器不允许客户端使用此类策略时,则会使用回退丢弃未同步更改策略重试客户端重置。 如果第二次尝试成功,则会调用OnAfterDiscard回调。
OnAfterRecovery
获取或设置回调,该回调指示刚刚发生了自动客户端重置。
声明
public ClientResetHandlerBase.AfterResetCallback? OnAfterRecovery { get; set; }
属性值
类型 | 说明 |
---|---|
ClientResetHandlerBase 。 AfterResetCallback | 客户端重置后立即调用的回调。 |
OnBeforeReset
获取或设置指示即将发生客户端重置的回调。
声明
public ClientResetHandlerBase.BeforeResetCallback? OnBeforeReset { get; set; }
属性值
类型 | 说明 |
---|---|
ClientResetHandlerBase 。 BeforeResetCallback | 在客户端重置之前调用的回调。 |