public virtual void GetViews(SQLCallback Callback)
 {
     Thread eThread = null;
     lock (ThreadSync) {
         ThreadedSQLCallback = Callback;
         eThread = new Thread (new ThreadStart (GetViewsThreadStart));
         eThread.Start ();
     }
 }
 public virtual void GetViewColumns(SQLCallback Callback, ViewSchema schema)
 {
     Thread eThread = null;
     lock (ThreadSync) {
         ThreadedSQLCallback = Callback;
         ThreadedViewSchema = schema;
         eThread = new Thread (new ThreadStart (GetViewColumnsThreadStart));
         eThread.Start ();
     }
 }
        public virtual void ExplainSQL(string SQLText, SQLCallback Callback)
        {
            if (CanExplain != true)
                return;

            lock (ThreadSync) {
                ThreadedSQLCallback = Callback;
                ThreadedSQLText = SQLText;
                Thread eThread = new Thread (new ThreadStart (ExplainSQLThreadStart));
                eThread.Start ();
            }
        }
 public virtual void GetTableConstraints(SQLCallback Callback, TableSchema schema)
 {
     Thread eThread = null;
     lock (ThreadSync) {
         ThreadedSQLCallback = Callback;
         ThreadedTableSchema = schema;
         eThread = new Thread (new ThreadStart (GetTableConstraintsThreadStart));
         eThread.Start ();
     }
 }
 public virtual void ExecuteSQL(string SQLText, SQLCallback Callback)
 {
     lock (ThreadSync) {
         ThreadedSQLCallback = Callback;
         ThreadedSQLText = SQLText;
         Thread eThread = new Thread (new ThreadStart (ExecuteSQLThreadStart));
         eThread.Start ();
     }
 }