有关如何记录同步过程的示例
Examples on how to log the sync procedure
我已经实现了同步并且工作正常。由于同步时间相当长(及时),我想创建一个 ProgressBar
来显示同步进度。我看过一些同步事件,比如 ApplyingChanges
。
但是我并没有像我期望的那样得到它们,文档也没有给我太多帮助。
有人 link 有关于同步日志如何工作的好例子吗?我将不胜感激。
(我使用的是同步框架 2.1)
例如,在ApplyingChanges
和ChangesApplied
事件之间没有任何事件吗?
不幸的是,由于我不再为我们使用 Microsoft Sync Framework 2.1 的项目工作,因此无法显示代码,我深表歉意。希望解释能让你朝着正确的方向前进。
在 Microsoft Sync Framework 2.1 中,您可以订阅会话进度事件:Microsoft.Synchronization.SyncOrchestrator.SessionProgress
。说实话。我没有使用此事件获得可靠的进度条。所以我自己从两个同步提供者那里收集了信息。
我只有 DatabaseSyncProvider
(继承 RelationalSyncProvider
)的经验,但希望能帮到您。
RelationalSyncProvider
正在引发一些可以帮助您收集信息的事件:
See RelationalSyncProvider
请注意双向同步意味着两个同步会话。建议计算每个会话的进度。因此,在双向同步的情况下,一旦一个会话完成,您就完成了 50%。
对于更高级的进度条,你需要知道你要同步多少条记录。结合从 RelationalSyncProvider 的事件中收集的信息,您可以构建一个非常准确的进度条。为此,您可以构建一种预览,它正在计算将在下一次会话期间同步的更改。
为此,您可以使用目标端的 SyncKnowledge
和源端数据库上的 selectchanges
查询。 selectchanges
查询的 whereclause,可以用于您自己的 countchanges
存储过程。由于您使用的是与 MS Sync Framework 用于 select 更改相同的 whereclause,因此您将检索到将为该会话同步发送的记录的确切数量。
我们不仅将此 'countchanges' 用于进度条,还用于统计和高级计划。如果你只是为了一个进度条,你需要在性能损失和用户友好的进度条或不太可靠的进度条之间做出决定。