Freigeben über


Melden des Synchronisierungsstatus

Microsoft Sync Framework meldet den Synchronisierungsstatus mithilfe des ProgressChanged-Ereignisses (bei verwaltetem Code) oder des ISyncCallback::OnProgress-Ereignisses (bei nicht verwaltetem Code) an eine Anwendung. Wann dieses Ereignis ausgelöst wird und welche Informationen übermittelt werden, ist von der Implementierung des Quellenanbieters abhängig.

Melden jeder Änderung

Standardmäßig sendet Sync Framework das ProgressChanged-Ereignis (bei verwaltetem Code) oder ISyncCallback::OnProgress-Ereignis (bei nicht verwaltetem Code) einmalig für jede vom Zielanbieter ausgeführte Änderung. Sync Framework sendet dieses Ereignis auch einmalig, nachdem jeder Änderungsbatch vollständig verarbeitet wurde.

Diese Standardstatusbenachrichtigung erfolgt nur, wenn der Quellenanbieter keine Schätzungen der Arbeit für die Änderungen und Änderungsbatches angibt.

Melden der geschätzten Arbeit

Sync Framework kann Arbeitsschätzungen auch für übernommene Änderungen und Änderungsbatches melden. Der Quellenanbieter muss sowohl die erforderliche Arbeit für die Übernahme jeder Änderung als auch für die vollständige Übernahme jedes Änderungsbatchs schätzen. Der Quellenanbieter muss auch die verbleibende Arbeit in der Synchronisierungssitzung schätzen. Wenn der Quellenanbieter diese Werte festgelegt hat, summiert Sync Framework während der Verarbeitung eines Änderungsbatchs die abgeschlossene Arbeit bei jeder durch den Zielanbieter übernommenen Änderung, bei jedem Konflikt oder jedem durch den Zielanbieter übernommenen Änderungsbatch. Sync Framework sendet dann in regelmäßigen Abständen das ProgressChanged-Ereignis (bei verwaltetem Code) oder das ISyncCallback::OnProgress-Ereignis (bei nicht verwaltetem Code), um die abgeschlossene Gesamtarbeit und die gesamte Arbeit in der Sitzung zu melden. Außerdem sendet Sync Framework dieses Ereignis, nachdem jeder Änderungsbatch vollständig verarbeitet wurde.

Um den Status der geschätzten Arbeit zu melden, muss der Quellenanbieter die geschätzte Arbeit für jede Änderung und jeden Änderungsbatch sowie die restliche Arbeit für die Sitzung angeben, wie in der folgenden Tabelle beschrieben wird.

Typ der geschätzten Arbeit Angabe bei Verwendung verwalteten Codes Angabe bei Verwendung nicht verwalteten Codes

Änderung

WorkEstimate

dwWorkForChange-Parameter von ISyncChangeBatchBase::AddItemMetadataToGroup oder ISyncChangeBatch::AddLoggedConflict. Sync Framework stellt diesen Wert auch über ISyncChange::SetWorkEstimate zur Verfügung.

Änderungsbatch

BatchWorkEstimate

ISyncChangeBatchBase::SetWorkEstimateForBatch

Sitzung

RemainingSessionWorkEstimate

ISyncChangeBatchBase::SetRemainingWorkEstimateForSession

Melden benutzerdefinierter Statuswerte

Anbieter können auch jederzeit eine Statusbenachrichtigung senden, indem sie OnProgressChanged (bei verwaltetem Code) oder ISyncSessionState::OnProgress (bei nicht verwaltetem Code) aufrufen. Wenn die Synchronisierungsstufe als ChangeApplication (bei verwaltetem Code) oder SPS_CHANGE_APPLICATION (bei nicht verwaltetem Code) angegeben wird, akkumuliert Sync Framework die insgesamt abgeschlossene Arbeit jedes Mal, wenn die Statusbenachrichtigung gesendet wird. Sync Framework interpretiert auch die angegebene gesamte Arbeit als die für die Sitzung verbleibende Arbeit und berechnet die gesamte Arbeit für die Sitzung, indem die angegebene gesamte Arbeit zu dem akkumulierten Wert der abgeschlossenen Arbeit addiert wird. Sync Framework übergibt diese berechneten Werte anschließend an das Statusbenachrichtigungsereignis. Wenn die Synchronisierungsstufe einen anderen gültigen Wert hat, werden die Werte für die geschätzte Arbeit direkt an das Statusbenachrichtigungsereignis übergeben.

Sie müssen sicherstellen, dass dieselbe Arbeit nicht zweimal gemeldet wird, wenn der Quellenanbieter Schätzungen der Arbeit angibt und der Zielanbieter Statusbenachrichtigungen sendet sowie für den Synchronisierungsstatus ChangeApplication (bei verwaltetem Code) oder SPS_CHANGE_APPLICATION (bei nicht verwaltetem Code) angibt. Der Grund dafür besteht darin, dass Sync Framework die Summe für die abgeschlossene Arbeit immer dann berechnet, wenn während der Übernahme von Änderungen Statusbenachrichtigungen gesendet werden. Wenn ein Anbieter eigene Statusbenachrichtigungen sendet, addiert Sync Framework die vom Anbieter angegebenen geschätzten Werte für die Arbeit und die insgesamt abgeschlossene Arbeit für die Sitzung. Dies kann dazu führen, dass dieselbe Arbeit zweimal gezählt wird: einmal, wenn sie von Sync Framework gemeldet wird, und einmal, wenn sie vom Anbieter gemeldet wird.

Siehe auch

Konzepte

Implementieren eines benutzerdefinierten Standardanbieters
Antworten auf Synchronisierungsereignisse