Страница 1 из 1

Приложение зависает после определенного количества ошибок.

Добавлено: 19 янв 2006, 15:40
bill_2000
Моделируя реальную ситуацию запускаю в таймере заведомо ошибочный запрос (например, селект из несуществующей таблицы). Помещаю открытие датасета в try ... except ... end. Вот так:

Код: Выделить всё

procedure TForm1.Timer1Timer(Sender: TObject);
  begin
     try
       pFIBTransaction1.startTransaction;
       pFIBTransaction1.commit;
       pFIBDataSet1.open;
     except
     on e:exception do 
        begin
            Panel1.caption:=inttostr(strtoint(Panel1.caption)+1);
            Memo1.lines.Add(e.Message);
            pFIBTransaction1.rollback;
        end;
  end;
end;
После определенного количества попыток (количество - от 20 до 4000) программа виснет.
Каковы могут быть причины этого, и возможны ли способы борьбы?

Пользуюсь Firebird 1.5.2

Добавлено: 19 янв 2006, 15:45
kdv
commit перед open это сильно, а так вообще, думаю что проблема или с таймером, или с FIBPlus, и к IB/FB отношения не имеет...

Добавлено: 19 янв 2006, 15:57
bill_2000
А FibPlus не является темой этого форума? Вроде в заголовке он упоминается...
Commit и Open - описался, пардон. На результат не влияет.

Добавлено: 19 янв 2006, 16:52
kdv
FIBPlus - это российский продукт, и у него есть вразумительная техподдержка. Если ты этим продуктом пользуешься, почему бы не спросить авторов?

Тем более, ты указал версию FB, которая тут никаким боком, а версию FIBPlus - нет...

Собственно, я не гоню тебя с FIBPlus отсюда, :) просто напрямую у разработчиков FIBPlus ответ можно получить быстрее.

p.s. смущает, однако, такая разница (от 20 до 400) в числе ошибок до зависания...

Добавлено: 21 янв 2006, 14:38
DSKalugin
Мож у таймера интервал достаточно мал и сервер не успевает реагировать на поток ошибок?