Поделиться через


Отчет о ходе синхронизации

Платформа Microsoft Sync Framework передает отчет о ходе синхронизации в приложении, используя событие ProgressChanged (для управляемого кода) или событие ISyncCallback::OnProgress (для неуправляемого кода). Время вызова этого события и передаваемые им данные зависят от реализации поставщика источника.

Отчет о каждом изменении

По умолчанию платформа Sync Framework отправляет событие ProgressChanged (для управляемого кода) или событие ISyncCallback::OnProgress (для неуправляемого кода) один раз для каждого изменения, применяемого поставщиком назначения. Платформа Sync Framework дополнительно отправляет это событие один раз после полного применения каждого пакета изменений.

Это стандартное уведомление о ходе синхронизации применяется, только когда поставщик источника не задает оценку объема работы для изменений или пакетов изменений.

Отчет с оценкой объема работы

Платформа Sync Framework также может сообщать оценку объема работы для применяемых изменений и пакетов изменений. Поставщик источника должен выполнить оценку объема работы, необходимого для применения каждого изменения, и объема работы, необходимого для полного применения каждого пакета изменений. Поставщик источника также должен выполнить оценку оставшегося объема работы в сеансе синхронизации. Если поставщик источника задал эти значения, то во время применения пакета изменений платформа Sync Framework складывает объемы работы, выполненной при применении каждого изменения, конфликта или пакета изменений в поставщике назначения. Затем платформа Sync Framework периодически отправляет событие ProgressChanged (для управляемого кода) или событие ISyncCallback::OnProgress (для неуправляемого кода), чтобы сообщить текущее значение выполненного объема работы и общий объем работы в сеансе. Платформа Sync Framework также отправляет это событие после полного применения каждого пакета изменений.

Чтобы передать оценку объема работы, поставщик источника должен задать оценку объема работы для каждого изменения и каждого пакета изменения, а также оставшийся объем работы в сеансе, как описано в следующей таблице.

Тип оцениваемого объема работы Задание в управляемом коде Задание в неуправляемом коде

Изменение

WorkEstimate

Параметр dwWorkForChange метода ISyncChangeBatchBase::AddItemMetadataToGroup или ISyncChangeBatch::AddLoggedConflict. Sync Framework также передает это значение с помощью метода ISyncChange::SetWorkEstimate.

Пакет изменений

BatchWorkEstimate

ISyncChangeBatchBase::SetWorkEstimateForBatch

Сеанс

RemainingSessionWorkEstimate

ISyncChangeBatchBase::SetRemainingWorkEstimateForSession

Настраиваемые отчеты о ходе выполнения

Поставщики также могут отправлять уведомления о ходе выполнения в любое время, вызывая метод OnProgressChanged (для управляемого кода) или метод ISyncSessionState::OnProgress (для неуправляемого кода). Если указана стадия синхронизации в виде значения ChangeApplication (для управляемого кода) или значения SPS_CHANGE_APPLICATION (для неуправляемого кода), платформа Sync Framework увеличивает общий объем выполненной работы каждый раз, когда отправляется уведомление о ходе выполнения. Платформа Sync Framework рассматривает заданный общий объем работы как оставшийся объем работы в сеансе и вычисляет общий объем работы для сеанса, добавляя заданный общий объем работы к совокупному значению выполненного объема работы. Затем платформа Sync Framework передает вычисленные значения в событие уведомления о ходе выполнения. Если стадия синхронизации имеет любое другое допустимое значение, оценка объема работы передается непосредственно в событие уведомления о ходе выполнения.

Следует соблюдать осторожность, чтобы не сообщать дважды об одном объеме работы, когда поставщик источника задает оценку объема работы, а поставщик назначения отправляет уведомления о ходе выполнения и задает для состояния синхронизации значение ChangeApplication (для управляемого кода) или значение SPS_CHANGE_APPLICATION (для неуправляемого кода). Такая ситуация возникает из-за того, что платформа Sync Framework увеличивает объем выполненной работы каждый раз, когда в ходе применения изменений отправляется уведомление о ходе выполнения. Если поставщик отправляет собственное уведомление о ходе выполнения, платформа Sync Framework добавит оценку объема работы, указанную поставщиком, к общему объему работы, выполненной в сеансе. Это может привести к двойному учету одной работы: первый раз при получении отчета от платформы Sync Framework, второй раз при получении отчета от поставщика.

См. также

Основные положения

Реализация стандартного пользовательского поставщика
Реагирование на события синхронизации