當不使用「同步處理程序」時,需要捕獲推和拉的同步錯誤。Azure移動服務中的同步衝突處理:ad hoc與同步處理程序
PUSH:
樣品說趕上MobileServiceInvalidOperationException
,MobileServicePushFailedException
和Exception
:
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
}
PULL:
樣品說趕上MobileServiceInvalidOperationException
和Exception
:
try {
await syncTable.PullAsync("allitems", syncTable.CreateQuery());
}
catch (MobileServiceInvalidOperationException ex) {
// ...pull failed
}
catch (Exception ex) {
// ...some other failure
}
SYNC HANDLER:
在.ExecuteTableOperationAsync()
中處理錯誤。樣品說要趕上 MobileServiceConflictException
,MobileServicePreconditionFailedException
和Exception
。
終於QUESTION(S):
我希望我上面覆蓋所有可能的異常類型。
如果我使用同步處理程序,這是否意味着我不需要嘗試趕上push/pull/purge /等。操作?我看過的示例有點令人困惑,因爲它們包含了同一項目中的所有內容(即時分辨率和同步處理程序)...
此外,許多樣本還包括一個同步處理程序作爲衝突處理的替代方法。 (例如,在https://github.com/lindydonna/xamarin-forms-offline-sync中,同步處理程序實際上並未在項目中使用)。如果使用同步處理程序,則不需要在異常塊中執行衝突解決方案,但是您需要一般的異常處理。 –
是的,謝謝你們,當然,一般的多用途漁獲總是有保證的,但我不知道在哪裏做解決衝突。 –
對於任何在移動設備上面臨此問題的人,爲了解決@AdrianHall關於連接問題提到的問題,您可以使用酷[連接庫](http://github.com/jamesmontemagno/ConnectivityPlugin)。我使用它來檢測無衝突的NETWORK問題,我相信它會向最後的catch(Exception ex){}'冒泡(down?)。 –