RecoverableErrorReportingContext::RecordRecoverableErrorForChange Method
Records a recoverable error that occurred when attempting to apply a change to an item.
Assembly: Microsoft.Synchronization.SimpleProviders (in Microsoft.Synchronization.SimpleProviders.dll)
Parameters
- errorData
- Type: Microsoft.Synchronization::RecoverableErrorData
The RecoverableErrorData object associated with the recoverable error that is reported.
| Exception | Condition |
|---|---|
| SimpleProviderInvalidOperationException | There were multiple recoverable errors, or a change was attempted on an object that is no longer valid. |
The following code example shows an implementation of the DeleteItem method that applies deletes to an in-memory sample data store. The method records a recoverable error if the delete cannot be applied. To view this code in the context of a complete application, see the "Sync101 using Simple Sync Provider" application that is available in the Sync Framework SDK and from Code Gallery.
public override void DeleteItem(ItemFieldDictionary keyAndExpectedVersion, RecoverableErrorReportingContext recoverableErrorReportingContext, out bool commitKnowledgeAfterThisItem) { IDictionary<uint, ItemField> expectedFields = (IDictionary<uint, ItemField>)keyAndExpectedVersion; ulong id = (ulong)expectedFields[CUSTOM_FIELD_ID].Value; if (_store.Contains(id)) { _store.DeleteItem(id); } else { // If the item to delete does not exist, record an error on this change and // continue with the rest of the session. recoverableErrorReportingContext.RecordRecoverableErrorForChange(new RecoverableErrorData(new Exception("Item not found in the store"))); } commitKnowledgeAfterThisItem = false; }
Public Overrides Sub DeleteItem(ByVal keyAndExpectedVersion As ItemFieldDictionary, ByVal recoverableErrorReportingContext As RecoverableErrorReportingContext, ByRef commitKnowledgeAfterThisItem As Boolean) Dim expectedFields As IDictionary(Of UInteger, ItemField) = DirectCast(keyAndExpectedVersion, IDictionary(Of UInteger, ItemField)) Dim id As ULong = CULng(expectedFields(CUSTOM_FIELD_ID).Value) If _store.Contains(id) Then _store.DeleteItem(id) Else ' If the item to delete does not exist, record an error on this change and ' continue with the rest of the session. recoverableErrorReportingContext.RecordRecoverableErrorForChange(New RecoverableErrorData(New Exception("Item not found in the store"))) End If commitKnowledgeAfterThisItem = False End Sub
Show: