Share via


RecoverableErrorReportingContext.RecordRecoverableErrorForChange Method

Records a recoverable error that occurred when attempting to apply a change to an item.

Namespace:  Microsoft.Synchronization.SimpleProviders
Assembly:  Microsoft.Synchronization.SimpleProviders (in Microsoft.Synchronization.SimpleProviders.dll)

Syntax

'Declaration
Public Sub RecordRecoverableErrorForChange ( _
    errorData As RecoverableErrorData _
)
'Usage
Dim instance As RecoverableErrorReportingContext
Dim errorData As RecoverableErrorData

instance.RecordRecoverableErrorForChange(errorData)
public void RecordRecoverableErrorForChange(
    RecoverableErrorData errorData
)
public:
void RecordRecoverableErrorForChange(
    RecoverableErrorData^ errorData
)
member RecordRecoverableErrorForChange : 
        errorData:RecoverableErrorData -> unit 
public function RecordRecoverableErrorForChange(
    errorData : RecoverableErrorData
)

Parameters

Exceptions

Exception Condition
SimpleProviderInvalidOperationException

There were multiple recoverable errors, or a change was attempted on an object that is no longer valid.

Examples

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

See Also

Reference

RecoverableErrorReportingContext Class

Microsoft.Synchronization.SimpleProviders Namespace