ActiveSync 用の Mobile Link プロバイダがアプリケーションを呼び出して同期を実行するときに起動されます。
Visual Basic Public Sub ActiveSyncInvoked( _ ByVal launchedByProvider As Boolean _ )
C# public void ActiveSyncInvoked( bool launchedByProvider );
launchedByProvider ActiveSync 同期を実行するために、Mobile Link プロバイダがアプリケーションを起動した場合は true です。同期の完了後、アプリケーションは自動的に停止しなければなりません。ActiveSync 用 Mobile Link プロバイダが呼び出したときに、すでにアプリケーションが実行されていた場合は false です。
このメソッドは、別のスレッドによって呼び出されます。マルチスレッドの問題を回避するには、このメソッドがユーザ・インタフェースにイベントを通知する必要があります。マルチスレッドを使用する場合は、スレッドごとに別々の接続を使用し、lock キーワードを使用して、アプリケーションの共有オブジェクトにアクセスすることをおすすめします。
同期が完了したら、アプリケーションは ULDatabaseManager.SignalSyncIsComplete() を呼び出して、ActiveSync 用の Mobile Link プロバイダに対して通知する必要があります。
次のコード・フラグメントは、ActiveSync 要求を受信して、UI スレッドで同期を実行する方法を示しています。
' Visual Basic Imports iAnywhere.Data.UltraLite Public Class MainWindow Inherits System.Windows.Forms.Form Implements ULActiveSyncListener Private conn As ULConnection Public Sub New(ByVal args() As String) MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call ULConnection.DatabaseManager.SetActiveSyncListener( _ "myCompany.myapp", Me _ ) 'Create Connection ... End Sub Protected Overrides Sub OnClosing( _ ByVal e As System.ComponentModel.CancelEventArgs _ ) ULConnection.DatabaseManager.SetActiveSyncListener( _ Nothing, Nothing _ ) MyBase.OnClosing(e) End Sub Public Sub ActiveSyncInvoked( _ ByVal launchedByProvider As Boolean _ ) Implements ULActiveSyncListener.ActiveSyncInvoked Me.Invoke(New EventHandler(AddressOf Me.ActiveSyncAction)) End Sub Public Sub ActiveSyncAction( _ ByVal sender As Object, ByVal e As EventArgs _ ) ' Do active sync conn.Synchronize() ULConnection.DatabaseManager.SignalSyncIsComplete() End Sub End Class |
// C# using iAnywhere.Data.UltraLite; public class Form1 : System.Windows.Forms.Form, ULActiveSyncListener { private System.Windows.Forms.MainMenu mainMenu1; private ULConnection conn; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after // InitializeComponent call // ULConnection.DatabaseManager.SetActiveSyncListener( "myCompany.myapp", this ); // Create connection ... } protected override void Dispose( bool disposing ) { base.Dispose( disposing ); } protected override void OnClosing( System.ComponentModel.CancelEventArgs e ) { ULConnection.DatabaseManager.SetActiveSyncListener( null, null ); base.OnClosing(e); } public void ActiveSyncInvoked(bool launchedByProvider) { this.Invoke( new EventHandler( ActiveSyncHandler ) ); } internal void ActiveSyncHandler(object sender, EventArgs e) { conn.Synchronize(); ULConnection.DatabaseManager.SignalSyncIsComplete(); } } |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |