/// <summary> /// Executes the supplied query and calls the callback function for each row of result /// </summary> /// <remarks> /// <p> /// If the database is busy (ie with another process/thread using it) then /// this method will call Thread.Sleep(), and then retry the query. Number of /// retries and retry delay are configurable using the appropriate properties.</p> /// <p>The result set object may be empty if there are no results, or if the /// query does not return results (eg. UPDATE, INSERT, DELETE etc)</p> /// </remarks> /// <param name="query">The SQL query to execute</param> /// <param name="callback">The callback function to call /// (object Param, string[] ColumnNames, ArrayList Data)</param> /// <param name="Param">A object to pass to the callback function</param> /// <exception cref="SQLiteException"> /// Thrown if an error occurs or if the database is busy and the retries /// are exhausted. /// </exception> public unsafe void Execute(string query, ResultCallBack callback, object Param) { column_names = null; //reset for each new query param = Param; callbackfunc = callback; ResultCode errorCode; string errorMsg; int retries = 0; using (SqliteString sql = new SqliteString(query)) { while ((errorCode = SQLiteClient.sqlite3_exec( this.dbHandle, sql.ToPointer(), (callbackfunc == null) ? null : new SQLiteCallback(CallBack), IntPtr.Zero, out errorMsg)) == ResultCode.BUSY && retries < this.busyRetries) { Thread.Sleep(this.busyRetryDelay); ++retries; continue; } if (errorCode != ResultCode.OK) { throw new SQLiteException(SQLiteClient.GetMessageForError(errorCode) + ":\n" + errorMsg + "\n the query string is :\n" + query, errorCode); } } }
public async void Query(string database, string sql, ResultCallBack resultCallBack) { List <Serie> series = await _client.QueryAsync(database, sql); string result = Newtonsoft.Json.JsonConvert.SerializeObject(series); resultCallBack?.Invoke(result); }
public async void GetDatabases(ResultCallBack resultCallBack) { List <Database> databases = await _client.ShowDatabasesAsync(); string result = Newtonsoft.Json.JsonConvert.SerializeObject(databases); resultCallBack?.Invoke(result); }
private ResultCallBack resultcallback; //实例化回调方法 #endregion Fields #region Constructors /// <summary> /// 构造函数 /// </summary> /// <param name="info">邮件信息</param> /// <param name="reinfo">邮件记录</param> /// <param name="resultcallback">回调函数</param> public AsynEmail(EmailInfo info,EmailRecordInfo reinfo,ResultCallBack resultcallback) { this.Info = info; this.resultcallback = resultcallback; this.ReInfo = reinfo; }
/// <summary> /// 构造函数 /// </summary> /// <param name="info">邮件信息</param> /// <param name="reinfo">邮件记录</param> /// <param name="resultcallback">回调函数</param> public AsynEmail(EmailInfo info, EmailRecordInfo reinfo, ResultCallBack resultcallback) { this.Info = info; this.resultcallback = resultcallback; this.ReInfo = reinfo; }
public void setCallBack(byte resultType, ResultCallBack callback) { callbacks[resultType] = callback; }