Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.08.2011, 21:06   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию Как правельно работать с событием в потоке через форму

Народ всем привет, сорри... но не могу понять принцып действия этого прикола, даже на теории. Вот к примеру создал я поток через первую форму, как в нём из событие (event) вызвать форму два и дождаться от формы разрешеия дальнейшей работы потока, прочитал что видел, но так и не дошло, мож кто ни будт прокоментирует хотяб на таком коде в чём прикол
Код:
TmyThread = class(TThread)
..
public
  stopRequested:boolean;
  procedure stop;
  ..
end;

procedure TmyThread.stop;//откуда это правельней вызвать?
begin
  stopRequested:=true;
  someEventInWFMOarray.signal;// что за сигнал?
end;

procedure TmyThread.execute;
begin;
  while true do
  begin
    waitForMultipeObjects();
    if stopRequested then exit;
    work;
  end;
end;

TForm2.ZipForge1OverallProgress(sender:TObject,......)
begin
  cancel:=TmyThread(Sender).stopRequested;
  if cancel then exit;
  doStuff; // куда doStuff может дальше привисти?
end;

Последний раз редактировалось bulldog5293; 12.08.2011 в 22:26.
bulldog5293 вне форума Ответить с цитированием
Старый 12.08.2011, 22:15   #2
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
всем привет, сорри
Сказав это ты тем самым сожалеешь о том что ты передал всем привет.
Ну так и не передавал бы, какие проблемы-то ?)

Цитата:
через
Ты вообще в состоянии изложить проблему без этого детсадовского термина - "через" ?
mss вне форума Ответить с цитированием
Старый 12.08.2011, 22:19   #3
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

mss причем тут дет сад, я просто прошу объяснить как в потоке работать с events
bulldog5293 вне форума Ответить с цитированием
Старый 12.08.2011, 22:29   #4
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
причем тут дет сад
А что, это по-твоему "взрослый" термин - "через" ?)

Цитата:
как в потоке работать с events
Ты не поверишь - НЕ в потоке с events работать нельзя. ВООБЩЕ нельзя.
А судя по твоему вопросу ты видимо достоверно знаешь как "работать с events" не в потоке.
mss вне форума Ответить с цитированием
Старый 12.08.2011, 22:38   #5
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

я вобще без понятий как они робят, то что я нагуглил ответов мне не дало, да и время просто убил на поиск инфы, можеш на примере из первого поста объяснить как правельней с ними работать, прост TmyThread.stop; вообще без понятий от куда вызывать
bulldog5293 вне форума Ответить с цитированием
Старый 12.08.2011, 22:55   #6
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
я вобще без понятий как они робят
Я не объясняю "по понятиям".
Только "по закону".
А закон в этом случае один - msdn.

Цитата:
в чём прикол
"Прикол" - это в детском саду.
А в программировании это "логика функционирования". Но про нее ты не спрашивал)
mss вне форума Ответить с цитированием
Старый 12.08.2011, 22:59   #7
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Цитата:
А в программировании это "логика функционирования". Но про нее ты не спрашивал)
Хорошё, как должен функционировать данный код что бы пока на форме два не нажата кнопка, он был приостановленым
bulldog5293 вне форума Ответить с цитированием
Старый 12.08.2011, 23:09   #8
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Судя по "прикольному" коду в обработчике клика кнопки той самой "формы два" должен быть вызван метод Stop объекта класса TmyThread.
mss вне форума Ответить с цитированием
Старый 14.08.2011, 22:00   #9
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

И всё таки мне не понятно, если в
Код:
procedure TmyThread.stop;
begin
  stopRequested:=true;
end;
Тогда где нужно указать stopRequested:=false; и для чего нужен waitForMultipeObjects();
bulldog5293 вне форума Ответить с цитированием
Старый 15.08.2011, 02:36   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
// что за сигнал?
Сам написал и сам не знаешь что это?

Ах, ты содрал код. А может надо не сдирать код, а учиться писать самому?

Делается это очень просто: формулируется задача (чего надо, что хотим получить) и пытаемся написать код САМИ. Не получается? Читаем мануалы/книжки и просим помощи.

Цитата:
но не могу понять принцып действия этого прикола
Мы тоже. Код не полон. Кто такие waitForMultipeObjects, work, doStuff и пр. и что они делают - в коде не показано: мы это угадать должны или как? Кто вызывает ZipForge1OverallProgress?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работать с регистром 1С через OLE Toreno_87 Помощь студентам 0 22.07.2010 00:27
как правельно обработать полученное изображение через HHTP? Человек_Борща Общие вопросы Delphi 8 02.06.2010 23:12
Как работать через Bluetooth в Delphi? W0LF Общие вопросы Delphi 6 29.11.2009 16:17
Как работать с двумерными массивами через указатели? pascalC Общие вопросы C/C++ 1 12.11.2008 08:33