非同期方式によるデータ同期

非同期方式によるデータ同期を使用すると、SQL Server 2005 Compact Edition (SQL Server Compact Edition) アプリケーションではデータ同期が完了するのを待機する間も他の情報の処理を続けることができます。

たとえば、アプリケーションが定期的にデータの同期を実行し、処理速度の遅い接続で大量のデータを送信するとします。この場合、データの同期中、アプリケーションはユーザーの入力に応答しません。ユーザーはアプリケーションが正常に動作していないと考えるかもしれません。データの同期中にアプリケーションをより利用しやすくするために、スマート デバイス上に同期の状態を示す進行状況バーを表示することをお勧めします。非同期方式によるデータ同期を使用すると、データ同期を開始し、同期イベントが発生したときにそのイベントをトラップできます。その後、アプリケーションによって、ユーザーにこれらのイベントが表示されます。

メモ :
また、非同期方式によるデータ同期を使用すると、既に進行中のデータ同期をキャンセルできます。

非同期方式によるデータ同期メソッドの使用

Microsoft .NET Compact Framework とマネージ プログラミング言語の 1 つ (Microsoft Visual Basic または Microsoft Visual C#) を使用して SQL Server Compact Edition アプリケーションを開発している場合、非同期呼び出しは Microsoft .NET Framework の他の非同期呼び出しと同様に扱うことができます。Microsoft Visual C++ for Devices を使用してネイティブ アプリケーションを開発している場合は、ISSCEMerge インターフェイスの SyncStatusReport プロパティを使用します。

マネージ API の使用

非同期方式によるデータ同期に使用される System.Data.SqlServerCE 名前空間には、次の 3 種類があります。

  • OnStartTableUpload
    このイベントは、サブスクリプションの各テーブルがパブリッシャにアップロードされた場合に発生します。
  • OnStartTableDownload
    このイベントは、各テーブルがパブリッシャから返された場合に発生します。
  • OnSynchronization
    このイベントは、調整エージェントを開始した場合またはコードで同期チェックが実行された場合に発生します。

Replication オブジェクトの次の 3 つのメソッドも使用します。

  • BeginSynchronize
    IAsyncResult オブジェクトを使用して同期処理を開始します。
  • EndSynchronize
    サーバーから同期終了メッセージが返されたときに EndSynchronize を呼び出します。
  • CancelSynchronize
    CancelSynchronize メソッドを呼び出して、同期をいつでもキャンセルできます。

次の手順では、データとマネージ API の同期を非同期で実行する処理を示します。

  1. Replication オブジェクトを作成し、そのプロパティを設定します。
  2. IAsyncResult オブジェクトを作成し、Replication オブジェクトの BeginSynchronize メソッドに設定します。
  3. BeginSynchronize メソッドに以下のプロパティを渡します。
    • コールバック メソッド (AysncCallback イベント)
    • OnStartTableUpload イベントを処理するメソッド
    • OnStartTableDownload イベントを処理するメソッド
    • OnSynchronization イベントを処理するメソッド
  4. コールバック メソッドにコードを追加し、EndSynchronize メソッドを呼び出します。
  5. IAsyncResult オブジェクトの AsyncWaitHandle メソッドを呼び出します。
  6. イベント ハンドラで、同期の現在の状態を報告するコード、または同期をキャンセルするコードを追加できます。
メモ :
状態の報告は、4 つのイベントの発生時に送信されます。4 つのイベントとは、各ユーザー テーブルのアップロード処理の開始、各ユーザー テーブルのダウンロード処理の開始、調整エージェントの開始、および調整エージェントの "完了の割合" を示す値の更新です。

ネイティブ API の使用

同期方式によるデータ同期と同様に、非同期方式によるデータ同期を実行するには、ISSCEMerge インターフェイスを使用します。マネージ コードでの処理とは異なり、非同期方式によるデータ同期はシングル スレッド処理のままです。同期通知は同期と同じスレッドにあります。つまり、ISSCEMerge インターフェイスの SyncStatusReport プロパティを使用して、同期状態のレポートを取得できます。

参照

処理手順

データを非同期的に同期する方法 (プログラム)

概念

データの同期 (SQL Server Compact Edition)
同期方式によるデータ同期
マルチユーザー アクセスと同期

ヘルプおよび情報

SQL Server Compact Edition のサポートについて