ISyncSessionState::OnProgress
Сообщает приложению о ходе синхронизации.
HRESULT OnProgress(
SYNC_PROVIDER_ROLE provider,
SYNC_PROGRESS_STAGE syncStage,
DWORD dwCompletedWork,
DWORD dwTotalWork);
Параметры
- provider
[in] Роль поставщика, отправляющего это событие.
- syncStage
[in] Текущая стадия сеанса синхронизации.
- dwCompletedWork
[in] Объем работы, выполненной в сеансе к настоящему моменту. Это значение интерпретируется как часть значения dwTotalWork.
- dwTotalWork
[in] Общий объем работы в сеансе.
Возвращаемое значение
S_OK
E_INVALIDARG, если provider или syncStage не являются допустимыми значениями.
Замечания
С помощью этого метода можно сообщать приложению о ходе выполнения пользовательского процесса. При вызове этого метода поставщиком создается событие ISyncCallback::OnProgress.
Если в качестве значения параметра syncStage указано SPS_CHANGE_APPLICATION, то Sync Framework накапливает итоговые данные о завершенной работе, задаваемые параметром dwCompletedWork при каждом вызове метода ISyncSessionState::OnProgress. Sync Framework также рассматривает параметр dwTotalWork как оставшийся объем работы в сеансе и вычисляет общий объем работы для сеанса, прибавляя dwTotalWork к накопленному значению завершенной работы. Затем Sync Framework передает эти вычисленные значения интерфейсу ISyncCallback::OnProgress. Если единственным допустимым значением является syncStage, то значения dwCompletedWork и dwTotalWork передаются интерфейсу ISyncCallback::OnProgress напрямую.
Если предполагаемое количество работы указывается поставщиком источника, могут возникать непредвиденные результаты при вызове поставщиком интерфейса ISyncSessionState::OnProgress с указанием SPS_CHANGE_APPLICATION в качестве значения параметра syncStage. Это связано с тем, что Sync Framework подводит итоги по выполненной работе каждый раз при отправке уведомлений о ходе выполнения во время применения изменений. Если поставщик отправляет собственное уведомление о ходе выполнения, указывая SPS_CHANGE_APPLICATION в качестве значения параметра syncStage, то Sync Framework прибавляет значения предполагаемого объема работы, указанные поставщиком, к общему объему выполненной работы в сеансе. Из-за этого одна и та же работа может быть посчитана дважды: один раз, когда о нем сообщает платформа Sync Framework, и один раз, когда о выполнении сообщает поставщик.