Azure 移动服务中的同步冲突处理:即席与同步处理程序

本文关键字:处理 同步 程序 冲突 移动 服务 Azure | 更新日期: 2023-09-27 17:57:05

不使用"同步处理程序"时,需要捕获推送和拉取的同步错误。

推:

样本说要捕捉MobileServiceInvalidOperationExceptionMobileServicePushFailedExceptionException

try {
  await client.SyncContext.PushAsync();
}
catch (MobileServiceInvalidOperationException ex) {
  // ...push failed
  // ...do manual conflict resolution
}
catch (MobileServicePushFailedException ex) {
  // ...push failed
  // ...do manual conflict resolution
}
catch (Exception ex) {
  // ...some other failure
  }

拉:

样品说要抓MobileServiceInvalidOperationExceptionException

try {
  await syncTable.PullAsync("allitems", syncTable.CreateQuery());
}
catch (MobileServiceInvalidOperationException ex) {
  // ...pull failed
}
catch (Exception ex) {
  // ...some other failure
}

同步处理程序:

错误以 .ExecuteTableOperationAsync() 处理。样品说要抓 MobileServiceConflictExceptionMobileServicePreconditionFailedExceptionException

最后是一个问题:

我希望我涵盖了上面所有可能的异常类型。

如果我使用同步处理程序,这是否意味着我不需要尝试捕获推送/拉取/清除/等操作?我看到的示例有点令人困惑,因为它们包含同一项目中的所有内容(临时分辨率和同步处理程序)......

Azure 移动服务中的同步冲突处理:即席与同步处理程序

您应该始终将推/拉/等操作放在 try/catch 块中。 始终存在发生您没有想到的异常(例如,包括网络消失)的风险。