SimpleSyncProvider.DestinationCallbacks Property
When overridden in a derived class, gets a SyncCallbacks object that is used to dispatch a synchronization event.
Namespace: Microsoft.Synchronization.SimpleProviders
Assembly: Microsoft.Synchronization.SimpleProviders (in Microsoft.Synchronization.SimpleProviders.dll)
Syntax
'Declaration
Public ReadOnly Property DestinationCallbacks As SyncCallbacks
Get
'Usage
Dim instance As SimpleSyncProvider
Dim value As SyncCallbacks
value = instance.DestinationCallbacks
public SyncCallbacks DestinationCallbacks { get; }
public:
virtual property SyncCallbacks^ DestinationCallbacks {
SyncCallbacks^ get () sealed;
}
abstract DestinationCallbacks : SyncCallbacks
override DestinationCallbacks : SyncCallbacks
final function get DestinationCallbacks () : SyncCallbacks
Property Value
Type: Microsoft.Synchronization.SyncCallbacks
A SyncCallbacks object that is used to dispatch a synchronization event.
Examples
The following code example creates event handlers that enable the sample application to report progress and status to the console. 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.
static void RegisterCallbacks(Microsoft.Synchronization.SimpleProviders.SimpleSyncProvider provider)
{
provider.DestinationCallbacks.FullEnumerationNeeded += new EventHandler<FullEnumerationNeededEventArgs>(DestinationCallbacks_FullEnumerationNeeded);
provider.DestinationCallbacks.ItemChangeSkipped += new EventHandler<ItemChangeSkippedEventArgs>(DestinationCallbacks_ItemChangeSkipped);
provider.DestinationCallbacks.ItemConflicting += new EventHandler<ItemConflictingEventArgs>(DestinationCallbacks_ItemConflicting);
provider.DestinationCallbacks.ProgressChanged += new EventHandler<SyncStagedProgressEventArgs>(DestinationCallbacks_ProgressChanged);
}
static void DestinationCallbacks_ProgressChanged(object sender, SyncStagedProgressEventArgs e)
{
if (e.Stage != SessionProgressStage.ChangeDetection)
{
Console.Write("Event Progress Changed: provider - {0}, ", e.ReportingProvider.ToString());
Console.Write("stage - {0}, ", e.Stage.ToString());
Console.WriteLine("work - {0} of {1}", e.CompletedWork, e.TotalWork);
}
}
static void DestinationCallbacks_ItemConflicting(object sender, ItemConflictingEventArgs e)
{
Console.Write("Event Item conflicting: source data - {0}, ", e.SourceChangeData != null ? e.SourceChangeData.ToString() : null);
Console.WriteLine("destination data - {0}", e.DestinationChangeData != null ? e.DestinationChangeData.ToString() : null);
e.SetResolutionAction(ConflictResolutionAction.Merge);
}
static void DestinationCallbacks_ItemChangeSkipped(object sender, ItemChangeSkippedEventArgs e)
{
Console.Write("Event Item Change Skipped: provider {0}, ", e.ReportingProvider.ToString());
Console.Write("stage - {0}, ", e.Stage.ToString());
Console.WriteLine("item - {0} ", e.ItemChange.ItemId.ToString());
}
static void DestinationCallbacks_FullEnumerationNeeded(object sender, FullEnumerationNeededEventArgs e)
{
FullEnumerationAction action = FullEnumerationAction.Full; // This can be changed by the application to control if full enumeration is FZull, Partial, or Aborted.
Console.Write("Event Full Enumeration Needed: old action {0}, ", e.Action.ToString());
Console.WriteLine("new action - {0} ", action.ToString());
e.Action = action;
}
Private Shared Sub RegisterCallbacks(ByVal provider As Microsoft.Synchronization.SimpleProviders.SimpleSyncProvider)
AddHandler provider.DestinationCallbacks.FullEnumerationNeeded, AddressOf DestinationCallbacks_FullEnumerationNeeded
AddHandler provider.DestinationCallbacks.ItemChangeSkipped, AddressOf DestinationCallbacks_ItemChangeSkipped
AddHandler provider.DestinationCallbacks.ItemConflicting, AddressOf DestinationCallbacks_ItemConflicting
AddHandler provider.DestinationCallbacks.ProgressChanged, AddressOf DestinationCallbacks_ProgressChanged
End Sub
Private Shared Sub DestinationCallbacks_ProgressChanged(ByVal sender As Object, ByVal e As SyncStagedProgressEventArgs)
If e.Stage <> SessionProgressStage.ChangeDetection Then
Console.Write("Event Progress Changed: provider - {0}, ", e.ReportingProvider.ToString())
Console.Write("stage - {0}, ", e.Stage.ToString())
Console.WriteLine("work - {0} of {1}", e.CompletedWork, e.TotalWork)
End If
End Sub
Private Shared Sub DestinationCallbacks_ItemConflicting(ByVal sender As Object, ByVal e As ItemConflictingEventArgs)
Console.Write("Event Item conflicting: source data - {0}, ", If(e.SourceChangeData IsNot Nothing, e.SourceChangeData.ToString(), Nothing))
Console.WriteLine("destination data - {0}", If(e.DestinationChangeData IsNot Nothing, e.DestinationChangeData.ToString(), Nothing))
e.SetResolutionAction(ConflictResolutionAction.Merge)
End Sub
Private Shared Sub DestinationCallbacks_ItemChangeSkipped(ByVal sender As Object, ByVal e As ItemChangeSkippedEventArgs)
Console.Write("Event Item Change Skipped: provider {0}, ", e.ReportingProvider.ToString())
Console.Write("stage - {0}, ", e.Stage.ToString())
Console.WriteLine("item - {0} ", e.ItemChange.ItemId.ToString())
End Sub
Private Shared Sub DestinationCallbacks_FullEnumerationNeeded(ByVal sender As Object, ByVal e As FullEnumerationNeededEventArgs)
Dim action As FullEnumerationAction = FullEnumerationAction.Full
' This can be changed by the application to control if full enumeration is FZull, Partial, or Aborted.
Console.Write("Event Full Enumeration Needed: old action {0}, ", e.Action.ToString())
Console.WriteLine("new action - {0} ", action.ToString())
e.Action = action
End Sub