非同步資料同步處理
非同步資料同步處理可以讓 SQL Server Compact 3.5 應用程式在等待資料同步處理完成時,繼續處理其他資訊。
例如,假設應用程式會經常執行資料同步處理,並以緩慢的連接速度傳送許多資料。則在資料同步處理期間,應用程式將不會回應使用者的輸入。如此使用者可能會認為應用程式並沒有正常運作。若要讓應用程式在資料同步處理期間的介面更友善,您可能需要在智慧型裝置上顯示進度列,以指示同步處理狀態。藉由使用非同步資料同步處理,您可以啟始資料同步處理,然後在同步處理事件發生時截取這些事件。然後應用程式便可以將這些事件顯示給使用者查看。
注意
使用非同步資料同步處理也可以讓您取消已經在進行的資料同步處理。
使用非同步資料同步處理方法
如果您是使用 Microsoft .NET Compact Framework 和 Managed 程式語言 (Microsoft Visual Basic 或 Microsoft Visual C#) 之一來開發 SQL Server Compact 3.5 應用程式,則非同步呼叫的處理會如同其他 Microsoft .NET Framework 中的非同步呼叫的處理一樣。如果您是使用 Microsoft Visual C++ for Devices 來開發原生應用程式,則會使用 ISSCEMerge 介面的 SyncStatusReport 屬性。
使用 Managed API
在 System.Data.SqlServerCE 命名空間中有三種類型是用於非同步資料同步處理︰
OnStartTableUpload
當訂閱中的每個資料表上傳到發行者時,便會發生此事件。
OnStartTableDownload
當每個資料表從發行者傳回時,便會發生此事件。
OnSynchronization
當 Reconciler 啟動時,或是當程式碼執行同步處理檢查時,便會發生此事件。
您也可以使用下列 Replication 物件的三種方法︰
BeginSynchronize
此方法會使用 IAsyncResult物件來開始同步處理程序。
EndSynchronize
當伺服器傳回結束同步處理訊息時,您可以呼叫 EndSynchronize。
CancelSynchronize
您可以呼叫 CancelSynchronize 方法,以便在任何時間取消同步處理。
下列步驟顯示使用 Managed API 執行非同步資料同步處理時的程序︰
建立 Replication 物件,並設定其屬性。
建立 IAsyncResult 物件,並將它設定為 Replication 物件的 BeginSynchronize 方法。
將下列屬性傳遞至 BeginSynchronize 方法︰
回呼方法 (AysncCallback 事件)。
處理 OnStartTableUpload 事件的方法。
處理 OnStartTableDownload 事件的方法。
處理 OnSynchronization 事件的方法。
將程式碼加入至回呼方法,以呼叫 EndSynchronize 方法。
呼叫 IAsyncResult 物件的 AsyncWaitHandle 方法。
在事件處理常式中,您可以加入程式碼以報告同步處理的目前狀態,或取消同步處理。
注意
狀態報表是在下列 4 個事件期間傳送︰在開始處理每個使用者資料表以進行上傳時、在開始處理每個使用者資料表以進行下載時、當重新調整器啟動時,以及每當重新調整器的「完成的百分比」值更新時。
使用原生 API
使用同步資料同步處理時,您是使用 ISSCEMerge 介面來執行非同步資料同步處理。與 Managed 程式碼中的程序不同,非同步資料同步處理仍然是單一執行緒程序。同步處理通知位在與同步處理相同的執行緒上;您必須使用 ISSCEMerge 介面的 SyncStatusReport 屬性來擷取同步處理狀態報表。