동기화 진행률 보고
Microsoft Sync Framework에서는 ProgressChanged 이벤트(관리 코드의 경우) 또는 ISyncCallback::OnProgress 이벤트(비관리 코드의 경우)를 사용하여 응용 프로그램에 동기화 진행률을 보고합니다. 이 이벤트가 발생하는 시점과 전송되는 정보는 원본 공급자의 구현에 따라 다릅니다.
각 변경 내용 보고
기본적으로 Sync Framework에서는 대상 공급자가 적용하는 변경 내용마다 ProgressChanged 이벤트(관리 코드의 경우) 또는 ISyncCallback::OnProgress 이벤트(비관리 코드의 경우)를 한 번씩 전송합니다. 각 일괄 변경 내용이 완전히 적용된 후에도 Sync Framework에서 이 이벤트를 한 번씩 전송합니다.
이 기본 진행률 알림은 원본 공급자가 변경 내용 및 일괄 변경 내용의 작업 예상률을 지정하지 않은 경우에만 사용됩니다.
작업 예상률 보고
Sync Framework에서는 적용된 변경 내용 및 일괄 변경 내용에 대한 작업 예상률을 보고할 수도 있습니다. 원본 공급자는 각 변경 내용을 적용하는 데 필요한 작업과 각 일괄 변경 내용을 완전히 적용하는 데 필요한 작업을 모두 예상해야 합니다. 원본 공급자는 동기화 세션에서 남은 작업도 예상해야 합니다. 원본 공급자에서 이러한 값을 지정한 경우 일괄 변경 내용이 적용되는 동안 Sync Framework에서는 대상 공급자가 각 변경 내용, 충돌 또는 일괄 변경 내용을 적용할 때 완료된 작업을 누적합니다. 그런 다음 Sync Framework에서 주기적으로 ProgressChanged 이벤트(관리 코드의 경우) 또는 ISyncCallback::OnProgress 이벤트(비관리 코드의 경우)를 전송하여 현재 완료된 총 작업량과 세션의 총 작업량을 보고합니다. 각 일괄 변경 내용이 완전히 적용된 후에도 Sync Framework에서 이 이벤트를 전송합니다.
예상 작업 진행률을 보고하려면 원본 공급자가 다음 표와 같이 각 변경 내용과 각 일괄 변경 내용의 작업 예상률 및 세션의 나머지 작업량을 지정해야 합니다.
작업 예상률 유형 | 관리 코드를 사용하여 지정 | 비관리 코드를 사용하여 지정 |
---|---|---|
변경 내용 |
ISyncChangeBatchBase::AddItemMetadataToGroup 또는 ISyncChangeBatch::AddLoggedConflict의 dwWorkForChange 매개 변수. Sync Framework에서는 ISyncChange::SetWorkEstimate를 통해서도 이 값을 제공합니다. |
|
일괄 변경 내용 |
||
세션 |
사용자 지정 진행률 보고
또한 공급자는 언제든지 OnProgressChanged(관리 코드의 경우) 또는 ISyncSessionState::OnProgress(비관리 코드의 경우)를 호출하여 진행률 알림을 전송할 수 있습니다. 동기화 단계가 ChangeApplication(관리 코드의 경우) 또는 SPS_CHANGE_APPLICATION(비관리 코드의 경우)으로 지정된 경우 Sync Framework에서는 진행률 알림이 전송될 때마다 완료된 총 작업량을 누적합니다. 또한 Sync Framework에서는 지정된 총 작업량을 세션의 나머지 작업량으로 해석하고 지정된 총 작업량을 완료된 작업량의 누적 값에 더하여 세션의 총 작업량을 계산합니다. 그런 다음 Sync Framework에서 이러한 계산된 값을 진행률 알림 이벤트에 전달합니다. 동기화 단계가 다른 유효한 값이면 작업 예상률 값이 진행률 알림 이벤트에 직접 전달됩니다.
원본 공급자가 작업 예상률을 지정했으며 대상 공급자가 진행률 알림을 전송하고 동기화 상태로 ChangeApplication(관리 코드의 경우) 또는 SPS_CHANGE_APPLICATION(비관리 코드의 경우)을 지정한 경우 같은 작업을 두 번 보고하지 않도록 주의해야 합니다. 이는 변경 내용을 적용하는 동안 진행률 알림이 전송될 때마다 Sync Framework에서 완료된 작업 값을 누적하기 때문입니다. 공급자가 자체 진행률 알림을 전송하는 경우 Sync Framework에서는 공급자가 지정한 작업 예상률 값을 세션의 완료된 총 작업량에 더합니다. 이로 인해 같은 작업이 Sync Framework에서 보고될 때와 공급자에서 보고될 때 각각 한 번씩 모두 두 번 계산될 수 있습니다.