我已經實現了同步並且工作正常。由於同步時間很長,我想創建一個顯示同步進度的ProgressBar
。我看過一些同步事件,如ApplyingChanges
。有關如何記錄同步過程的示例
然而,我沒有得到他們,因爲我期望,並且文檔也沒有給我太多的幫助。
有沒有人有鏈接到一些很好的例子如何同步記錄工程?我會非常感謝。
(我使用的是同步框架2.1)
例如,是不是還有ApplyingChanges
和ChangesApplied
事件之間的任何事件?
我已經實現了同步並且工作正常。由於同步時間很長,我想創建一個顯示同步進度的ProgressBar
。我看過一些同步事件,如ApplyingChanges
。有關如何記錄同步過程的示例
然而,我沒有得到他們,因爲我期望,並且文檔也沒有給我太多的幫助。
有沒有人有鏈接到一些很好的例子如何同步記錄工程?我會非常感謝。
(我使用的是同步框架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
查詢的where條款可用於您自己的countchanges
存儲過程。由於您正在使用MS Sync Framework用於選擇更改的相同條款,因此您將檢索將爲該會話同步發送的記錄的確切數量。
我們正在使用這個'countchanges'不僅用於進度條,還用於統計和高級調度。如果你只是想要一個進度條,你需要在性能損失和用戶友好的進度條之間做出決定,或者有一個不太可靠的進度條。
以前沒有聽說過'SessionProgress',試過了,在同步過程中發生了兩次。第一次以50/100和第二次100/100 ... 但是我確實知道提供者事件,但正如我在上次編輯中所說的,大部分同步時間都花在客戶端的ApplyingChanges和ChangesApplied之間,我似乎沒有得到其他事件... – Markus
這是真的。 SessionProgress不準確。 SessionProgress取決於你有多少會話。 1會話:(單向同步)將爲0-100%。如果您正在同步雙向。50%意味着第一次會議結束,並從第二次會議開始。因此,根本不準確 – hwcverwe
我無法回想應用更改和應用之間的內容。我在進度條中使用的大部分信息都來自同步提供程序的SyncProgress。我們還使用統計來預測同步過程兩個階段之間的持續時間。開始會話 - >確定更改 - >發送更改 - >應用更改 - >完成會話 – hwcverwe
哪個版本的Microsoft Sync Framework? – hwcverwe