Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TOracleSession.BreakExecution, Как прервать сессию? 
:(
    Опции темы
Budy
  Дата 20.5.2011, 08:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



:Приветствую
В отдельном потоке в отдельной сессии TOracleSession выполняю долгий SELECT (порядка 7-10 минут). Это дает пользователю выполнять основные функции формы.
При FormClose проверяю, если поток еще живой, то пытаюсь его Free.

Код

{ TStatUpdaterThread }
  TStatsUpdaterThread = class(TThread)
  public
    procedure Free;
  private
    OracleSession: TOracleSession;
  protected
    procedure Execute; override;
  end;
...
SUT: TStatsUpdaterThread; // Поток для обновления статов
...
procedure TMainForm.FormDestroy(Sender: TObject);
begin
  // Остановка потока
  if (SUT <> nil) then
    SUT.Free;
end;
...
procedure TStatsUpdaterThread.Free;
begin
  try
    OracleSession.BreakExecution; // !! Запрос не останавливается
    OracleSession.LogOff; // !! Тут вылазит 3 эксепшна
  except
    // Ошибка при стопе
    on e: Exception do
      Log('Exception: TStatsUpdaterThread.OracleSession.LogOff::'+e.Message); // Просто логируется в файлик
  end;
  OracleSession.Free;
  // nil для объекта
  FreeAndNil(SUT);
end;


В редких случаях прога не убивается при закрытии, а просто прячется и висит, загружая проц до 100%.
На OracleSession.BreakExecution ничего не происходит, а OracleSession.LogOff грязно ругается.

Внимание, вопрос:
- Как можно "мягко" завершить выполнение операции?

Это сообщение отредактировал(а) Budy - 20.5.2011, 09:08


--------------------
Как ты назовешь свой корабль, так на нем и напишут
user posted image
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0598 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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