private void BeginExecuteQueryCallback(IAsyncResult state) { ExecuteQueryDelegate del = (ExecuteQueryDelegate)state.AsyncState; this._dtResult = del.EndInvoke(state); this.RaiseExecuteStopped(); }
/// <summary> /// Функция запуска хранимых процедур или текстовых запросов. /// В процессе работы вызываются события QueryExecuteStartedEvent и QueryExecuteFinishedEvent /// </summary> /// <param name="CommandText">Текст команды или имя процедуры</param> /// <param name="CommandResultType">Тип возвращаемого результата</param> /// <param name="CommandType">Тип команды</param> /// <param name="ResultColumnName">Имя колонки с результатом</param> /// <param name="CommandTimeOut">Таймаут для команды (в секундах)</param> /// <returns>Структура с описанием результата</returns> public CommandResult ExecuteQuery(string CommandText, CommandResultTypes CommandResultType, CommandType CommandType, string ResultColumnName, int CommandTimeOut) { ExecuteQueryDelegate executeQueryDelegate = new ExecuteQueryDelegate(ExecuteQueryWork); /// Асинхронный запуск Запроса IAsyncResult ar = executeQueryDelegate.BeginInvoke( CommandText, CommandResultType, CommandType, ResultColumnName,CommandTimeOut, null, null); /// Событие: запрос начал исполнение if (QueryExecuteStartedEvent != null) { QueryExecuteStartedEvent(this, EventArgs.Empty); } /// Ожидание окончания CommandResult cr = executeQueryDelegate.EndInvoke(ar); /// Событие: запрос завершил выполнение if (QueryExecuteFinishedEvent != null) { QueryExecuteFinishedEvent(this, EventArgs.Empty); } return cr; }