Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Циклы в потоке 
:(
    Опции темы
Garri66656
Дата 10.12.2008, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет.
Помогите плиз разобрать с проблемкой.

У меня в отдельном потоке происходит проверка соединения с базой данных. Проверка проходит нормально, все отрабатывает, как надо. Но я не могу заключить её в цикл. (Не хватает знаний, опыта)
В общем, надо добиться, чтобы проверка соединения выполнялась каждые 10 секунд. Может и не циклы нужно использовать?

Код

procedure TMyThread.Execute;
var bExec : boolean;
    Conn : TADOConnection;
    Query: TADOQuery;
    Event: TEvent;
    i: integer;
begin
  bExec := false;
  CoInitializeEx (NIL, COINIT_MULTITHREADED);

  Event := TEvent.Create(nil, false, false, '');

  Conn := TADOConnection.Create(nil);
  Conn.LoginPrompt:=false;

  Query := TADOQuery.Create(nil);
  Query.Connection := Conn;
  Query.SQL.Add('select sysdate from dual;');
     begin
        for i:=0 to 10000 do
          begin
            try
              Conn.ConnectionString:=' Provider=OraOLEDB.Oracle.1;Password=qwerty;Persist Security Info=True;User ID=SYSTEM;Data Source=ORCL;Extended Properties=""';
                try
                  Conn.open;
                  Query.Open;
                  Query.Close;
                  Event.WaitFor(1000);
                  Query.Open;
                except
                  bExec := true;
                end;
                finally
                  sleep(9000);
                end;
          end;
    Query.Close;
    Conn.Close;

    Query.Free;
    Conn.Free;
    CoUninitialize;
    if bExec then
      Self.ReturnValue := -1
    else
      Self.ReturnValue := 0;
  end;
end;

PM MAIL   Вверх
MetalFan
Дата 11.12.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(Garri66656 @  10.12.2008,  16:05 Найти цитируемый пост)
Но я не могу заключить её в цикл. (Не хватает знаний, опыта)

эмм.. циклы никогда не писал? может тогда рано потоками заниматься?
заключи проверку в цикл вида:
Код

while not Terminated do
begin
//код проверки соединения
  Sleep(10000);  //или более корректный вариант "засыпания" с ожиданием объекта ядра с таймаутом в 10 сек.
end;



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Garri66656
Дата 15.12.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(MetalFan @  11.12.2008,  13:28 Найти цитируемый пост)
заключи проверку в цикл вида:

Спасибо, попробую.
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.0396 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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