Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Еще вопрос по потокам (TThread )и базам данных, Одновременная работа потоков 
:(
    Опции темы
BoBo
Дата 3.10.2003, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Здравствуйте,
Вот незадачка:

Два потока один должен всавлять запись, другой изменять
Значит, первый поток вставляет запись, выдает Showmessage,
а второй поток ждет пока я не нажму ОК на ShowMessage, а затем только
выполняется. А мне необходимо чтобы второй поток не ждал моего нажатия

Что посоветуете ?
Вот фрагменты  кода

...
Код

var
 T1,T2: TableThread;
begin
 T1:=TableThread.Create(true);
 T1.Query:=Query1;
 T1.id:=0; // будет вставка записи
 T1.FreeOnTerminate:=false;

 T2:=TableThread.Create(true);
 T2.Query:=Query1;
 T2.id:=1; //  будет модификация записи
 T2.FreeOnTerminate:=false;

// синхронизация потоков
procedure TableThread.Execute;
begin
  repeat
   Synchronize (ProcessTable);
  until Terminated;
end; 

//то, что должно выполняться
procedure TableThread.ProcessTable;
 begin
  case id of
  0: begin
   Query.SQL.Clear;

   Query.SQL.Add('update tabl ');
   Query.SQL.Add('set str = "wwwww"');
   Query.ExecSQL;
   showMessage('1 st Thread  - OK');
    end;

   1: begin
     Query.SQL.Clear;
     Query.SQL.Add('insert into tabl (id,str)');
     Query.SQL.Add('values (1, "___")');
     Query.ExecSQL;
  showMessage('2 nd Thread - OK');
      end;
  end;
  suspend;
 end;

 

Это сообщение отредактировал(а) Girder - 8.8.2006, 21:35
PM MAIL   Вверх
pavelv
Дата 8.8.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Переменную булевскую сделай(глобальную конечно), как только 1ый закончился ставь её в true. Во втором потоке перед выполнением сделай что-нибудь в духе
Код

while not bool do
begin
end;

Если поток не распознает изменение переменной попробуй Application.ProcessMessage(вообще должно и без этого обойтись). Если и тут не поможет то таймер тебе в помощь.

ADD: дямс, писал ответ в своей теме и решил помочь темам которые снизу светились как якобы: "Вы смотрели...?" А теме уже 3ий год идёт.

Это сообщение отредактировал(а) pavelv - 8.8.2006, 10:42
PM MAIL   Вверх
Romikgy
Дата 8.8.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

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





--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

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


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

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



ShowMessage всегда выполняется в главном потоке.
Юзай MessageBox с хэндлом 0.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

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

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

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

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


 




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


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

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