Segnalazione dello stato della sincronizzazione
In Microsoft Sync Framework lo stato della sincronizzazione viene segnalato a un'applicazione tramite l'evento ProgressChanged (per il codice gestito) o l'evento ISyncCallback::OnProgress (per il codice non gestito). Il momento in cui viene generato questo evento e le informazioni da esso inviate dipendono dall'implementazione del provider di origine.
Segnalazione di ciascuna modifica
Per impostazione predefinita, in Sync Framework viene inviato l'evento ProgressChanged (per il codice gestito) o l'evento ISyncCallback::OnProgress (per il codice non gestito) una volta per ogni modifica applicata dal provider di destinazione. In Sync Framework questo evento viene inoltre inviato dopo l'applicazione completa di ogni batch di modifiche.
Questa notifica dello stato predefinita viene utilizzata solo quando il provider di origine non specifica le stime di lavoro per modifiche o batch di modifiche.
Segnalazione del lavoro stimato
In Sync Framework è anche possibile segnalare stime di lavoro per modifiche e batch di modifiche applicati. Il provider di origine deve stimare il lavoro necessario per applicare ogni modifica e quello necessario per applicare completamente ogni batch di modifiche. Il provider di origine deve inoltre stimare il lavoro rimanente nella sessione di sincronizzazione. Se il provider di origine ha specificato questi valori, mentre viene applicato un batch di modifiche, in Sync Framework viene aggiunto il lavoro completato al momento dell'applicazione di ogni modifica, conflitto o batch di modifiche da parte del provider di destinazione. In Sync Framework viene quindi inviato periodicamente l'evento ProgressChanged (per il codice gestito) o l'evento ISyncCallback::OnProgress (per il codice non gestito) per segnalare il totale di lavoro corrente completato e il lavoro totale nella sessione. In Sync Framework questo evento viene inviato anche dopo che ogni batch di modifiche è stato applicato completamente.
Per segnalare lo stato del lavoro stimato, il provider di origine deve specificare il lavoro stimato per ogni modifica e ogni batch di modifiche e il lavoro rimanente per la sessione come descritto nella tabella seguente.
Tipo di lavoro stimato | Specificare tramite codice gestito | Specificare tramite codice non gestito |
---|---|---|
Modifica |
Il parametro dwWorkForChange di ISyncChangeBatchBase::AddItemMetadataToGroup o ISyncChangeBatch::AddLoggedConflict. Sync Framework fornisce questo valore anche tramite ISyncChange::SetWorkEstimate. |
|
Batch di modifiche |
||
Sessione |
Segnalazione dello stato personalizzato
I provider possono anche inviare una notifica dello stato in ogni momento chiamando OnProgressChanged (per il codice gestito) o ISyncSessionState::OnProgress (per il codice non gestito). Quando la fase della sincronizzazione viene specificata come ChangeApplication (per il codice gestito) o come SPS_CHANGE_APPLICATION (per il codice non gestito), in Sync Framework il lavoro totale completato viene accumulato ogni volta che viene inviata la notifica dello stato. In Sync Framework, inoltre, il lavoro totale specificato viene interpretato come il lavoro rimanente per la sessione e viene calcolato il lavoro totale per la sessione aggiungendo il lavoro totale specificato al valore accumulato per il lavoro completato. In Sync Framework questi valori calcolati vengono quindi passati all'evento di notifica dello stato. Quando la fase della sincronizzazione è rappresentata da qualsiasi altro valore valido, i valori delle stime di lavoro vengono passati direttamente all'evento di notifica dello stato.
È necessario prestare attenzione per evitare di segnalare due volte lo stesso lavoro quando il provider di origine specifica le stime di lavoro e il provider di destinazione invia le notifiche dello stato specificando ChangeApplication (per il codice gestito) o SPS_CHANGE_APPLICATION (per il codice non gestito) per lo stato della sincronizzazione. Ciò avviene in quanto in Sync Framework il valore relativo al lavoro completato viene aggiunto ogni volta che vengono inviate notifiche dello stato durante l'applicazione delle modifiche. Se un provider invia la notifica dello stato, in Sync Framework i valori relativi al lavoro stimato specificati dal provider vengono aggiunti al lavoro totale completato per la sessione. È pertanto possibile che lo stesso lavoro venga calcolato due volte, ovvero una volta quando viene segnalato da Sync Framework e un'altra quando viene segnalato dal provider.
Vedere anche
Concetti
Provider di sincronizzazione
Risposta agli eventi di sincronizzazione