サーバ起動同期用の Mobile Link Listener がアプリケーションを呼び出して同期を実行するときに起動されます。
Visual Basic Public Sub ServerSyncInvoked( _ ByVal messageName As String _ )
C# public void ServerSyncInvoked( string messageName );
messageName アプリケーションに送信されるメッセージの名前。
このメソッドは、別のスレッドによって呼び出されます。マルチスレッドの問題を回避するには、このメソッドがユーザ・インタフェースにイベントを通知する必要があります。マルチスレッドを使用する場合は、スレッドごとに別々の接続を使用し、lock キーワードを使用して、アプリケーションの共有オブジェクトにアクセスすることをおすすめします。
次のコード・フラグメントは、サーバ同期要求の受信方法と UI スレッドでの同期の実行方法を示してします。
' Visual Basic Imports iAnywhere.Data.UltraLite Public Class MainWindow Inherits System.Windows.Forms.Form Implements ULServerSyncListener 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.SetServerSyncListener( _ "myCompany.mymsg", "myCompany.myapp", Me _ ) 'Create Connection ... End Sub Protected Overrides Sub OnClosing( _ ByVal e As System.ComponentModel.CancelEventArgs _ ) ULConnection.DatabaseManager.SetServerSyncListener( _ Nothing, Nothing, Nothing _ ) MyBase.OnClosing(e) End Sub Public Sub ServerSyncInvoked(ByVal messageName As String) _ Implements ULServerSyncListener.ServerSyncInvoked Me.Invoke(New EventHandler(AddressOf Me.ServerSyncAction)) End Sub Public Sub ServerSyncAction( _ ByVal sender As Object, ByVal e As EventArgs _ ) ' Do Server sync conn.Synchronize() End Sub End Class |
// C# using iAnywhere.Data.UltraLite; public class Form1 : System.Windows.Forms.Form, ULServerSyncListener { 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.SetServerSyncListener( "myCompnay.mymsg", "myCompany.myapp", this ); // Create connection ... } protected override void Dispose( bool disposing ) { base.Dispose( disposing ); } protected override void OnClosing( System.ComponentModel.CancelEventArgs e ) { ULConnection.DatabaseManager.SetServerSyncListener( null, null, null ); base.OnClosing(e); } public void ServerSyncInvoked( string messageName ) { this.Invoke( new EventHandler( ServerSyncHandler ) ); } internal void ServerSyncHandler(object sender, EventArgs e) { conn.Synchronize(); } } |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |