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;
            }