SimpleSyncProvider::DestinationCallbacks Property
When overridden in a derived class, gets a SyncCallbacks object that is used to dispatch a synchronization event.
Assembly: Microsoft.Synchronization.SimpleProviders (in Microsoft.Synchronization.SimpleProviders.dll)
public: virtual property SyncCallbacks^ DestinationCallbacks { SyncCallbacks^ get () sealed; }
Property Value
Type: Microsoft.Synchronization::SyncCallbacksA SyncCallbacks object that is used to dispatch a synchronization event.
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
Show: