Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADO Частые запросы в цикле потока, ADO, поток, DLL 
:(
    Опции темы
namervasek
Дата 13.6.2012, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



Пишу длл. В ней выполняется мой поток
В потоке необходимо постояно делеать запрос к базе 
Вот метод Execute
Код

procedure TMainDevice.MainProc;

  function CreateQeury: TADOQuery;
  begin
    Result := TADOQuery.Create(nil);
    Result.AutoCalcFields := False;
    Result.Connection := FADOConnection;
    Result.CommandTimeout := 300;
    Result.CursorType := ctOpenForwardOnly;
    Result.LockType := ltReadOnly;
    Result.SQL.Text := MainSql;
    Result.ExecuteOptions := [eoAsyncExecute, eoAsyncFetchNonBlocking];
    Result.OnFetchComplete := QueryFetchComplete;
    FQueryComplete := False;
  end;  

var
  DataSet: TADOQuery;
  RecSet: _Recordset;
begin  
  while not Terminated do
  begin
  //////////////////////////////////////////////////////////////////////////////
  try
    // открывем
    DataSet := CreateQeury;
    DataSet.Open;
    try

      // ждем пока выполнится запрос
      while not FQueryComplete do
      begin
        if Terminated then
        begin
          DataSet.Recordset.Cancel;
          Break;
        end;
        Sleep(50);
      end;

      if FQueryComplete and not Terminated then
      begin
        RecSet := DataSet.Recordset;
        RecSet.MoveFirst;
        while not RecSet.EOF do
          RecSet.MoveNext;
      end;

    finally
      if DataSet.Active then
        DataSet.Recordset.Close;
      DataSet.Free;
    end;

    Sleep(3000);
  except
    //
  end;
  //////////////////////////////////////////////////////////////////////////////
  end;
end;

Если просто ходить отладчиком по коду то все нормально, но если запускать без отладки начинают валить exception причем IDE не показывает где они возникают(exception в основном access violation)
Отлаживаю с помощью host application(exe без исходников)
Пустой цикл работает нормально, так что у меня подозрение что это шалит ADO
Подскажите в чем может быть дело? 


PM MAIL   Вверх
namervasek
Дата 14.6.2012, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 3.12.2007

Репутация: нет
Всего: нет



В общем удалось победить exception. Достаточно было добывить sleep после открытия.
Но теперь нарисовалась новая проблема... 

Сегодня заметил что течет пямять EXE, очень маленькими порциями 4-16 кб в секунду. А то не есть хорошо так как приложение долно работать очень долго.
Как это можно исправить? 

PM MAIL   Вверх
Аватар
Дата 25.6.2012, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.6.2012

Репутация: нет
Всего: нет



ADOQuery в цикле создается каждый раз заново. В этом какой-то сокровенный смысл?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.