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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.06.2011, 00:35   #1
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
Восклицание Поток и WaitFor

Demo ver.

Если есть WaitFor, то главное окно подвисает? Он же должен транслировать сообщения.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Button1.Enabled := False;
 T := TDownloadThread.Create(nil, True);
  try
 Button2.Enabled := True;
 ProgressBar1.Position := 0;
 T.OnProgres := FncProgres;
 T.URL := Edit1.Text;
 T.FilePath := Pat + 'Autoruns.zip';
 T.Resume;
 T.WaitFor;
  finally
 FreeAndNil(T);
 Button1.Enabled := True;
 Button2.Enabled := False;
  end;
end;
Так нормально, не подвисает.
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
 Button1.Enabled := False;
 T := TDownloadThread.Create(nil, True);
  try
 Button2.Enabled := True;
 ProgressBar1.Position := 0;
 T.OnProgres := FncProgres;
 T.URL := Edit1.Text;
 T.FilePath := Pat + 'Autoruns.zip';
 T.Resume;
 while not T.Terminated do
  Application.ProcessMessages;
  finally
 FreeAndNil(T);
 Button1.Enabled := True;
 Button2.Enabled := False;
  end;
end;
Вложения
Тип файла: rar Thread WaitFor.rar (351.6 Кб, 19 просмотров)

Последний раз редактировалось Alter; 25.06.2011 в 00:40.
Alter вне форума Ответить с цитированием
Старый 25.06.2011, 00:57   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Если есть WaitFor, то главное окно подвисает?
не совсем, поток вызвавший ожидание, ждет пока отработает другой поток.
Цитата:
Он же должен транслировать сообщения.
поток делает то что у вас написано, у вас написано ждать, он и ждет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
waitfor() или чтото другое? Agnat Общие вопросы по Java, Java SE, Kotlin 0 12.12.2010 23:10
Поток. Не получается создать поток. Выдает ошибки при запуске bigory Общие вопросы по Java, Java SE, Kotlin 3 23.09.2010 00:40
Поток в Си shapiro Помощь студентам 1 18.04.2010 23:01
поток Артэс Общие вопросы C/C++ 3 09.12.2009 22:20
ПОТОК Neymexa Общие вопросы .NET 5 12.05.2009 01:03