Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.08.2010, 20:59
kardinal94 kardinal94 вне форума
Прохожий
 
Регистрация: 25.04.2010
Сообщения: 15
Репутация: 10
По умолчанию Проблема с подвисанием программы или подвисанием моих мозгов

Добрый день. У меня есть проблема. Никогда раньше с потоками не работал, почитал кое-что, понял мало что. Проблема в следующем:
У меня есть событие. При нажатии на кнопку загружаю HTML код более 18 страниц и выполняю над ними некоторые операции. Скорость загрузки страниц меня вполне устраивает, проблема в другом. При загрузке как сделать так, чтобы интерфейс программы не подвисал и отвечал на действия пользователя? Заранее благодарен
Ответить с цитированием
  #2  
Старый 28.08.2010, 21:35
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Между получением каждой страницы (или между получением пакетов), вставь код:
Код:
Application.ProcessMessages;
Должно помочь, хотя здесь многое зависит от способа получения тобой страниц.
Ответить с цитированием
  #3  
Старый 28.08.2010, 21:40
Программер_Х
 
Сообщения: n/a
Счастье

не всегда поможет)
при загрузки через TWebBrowser даже одной страницы зависает интерфейс...

Код:
for i:=0 to 1995+1 do
begin
webbrowser1.navigate('localhost');
Application.ProcessMessages;
if application.terminated then break; //если юзер закрыл прогу то остановляем цикл 
end;
Ответить с цитированием
  #4  
Старый 29.08.2010, 00:02
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

А если так:
Код:
type
  TWebAgent = class(TThread)
   private
    Browser: TWebBrowser;
   public
    procedure Execute; override;
  end;

  TForm3 = class(TForm)
    WebBrowser1: TWebBrowser;
    Button1: TButton;
    Label1: TLabel;
    Timer1: TTimer;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    Web: TWebAgent;
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TWebAgent.Execute;
begin
 Browser.Navigate('http:\\localhost');
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
 Timer1.Enabled := True;
 Web.Resume;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
 Web := TWebAgent.Create(True);
 Web.Browser := WebBrowser1;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
 Label1.Caption := TimeToStr(Now);
 Application.ProcessMessages;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 29.08.2010, 00:09
Программер_Х
 
Сообщения: n/a
Счастье

Вот так то норм...
еще таймер
Ответить с цитированием
  #6  
Старый 29.08.2010, 00:20
Программер_Х
 
Сообщения: n/a
По умолчанию

application.processmessages если добавить в таймер то это круто будет)))
круто придумали!
и в таймере поставим интервал 1 и будет происходит application.processmessages каждые 1 миллисекунды и вообще не будет глючит форма
Ответить с цитированием
  #7  
Старый 29.08.2010, 01:36
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Ну таймер там только для проверки отсутствия паузы во время загрузки страницы.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:08.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025