![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
	 | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Добрый день. У меня есть проблема. Никогда раньше с потоками не работал, почитал кое-что, понял мало что 
		
	
		
		
		
		
		
	
		
		
	
	
	 . Проблема в следующем:У меня есть событие. При нажатии на кнопку загружаю HTML код более 18 страниц и выполняю над ними некоторые операции. Скорость загрузки страниц меня вполне устраивает, проблема в другом. При загрузке как сделать так, чтобы интерфейс программы не подвисал и отвечал на действия пользователя? Заранее благодарен  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Между получением каждой страницы (или между получением пакетов), вставь код: 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	Application.ProcessMessages;  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 не всегда поможет) 
		
	
		
		
		
		
		
	
		
		
	
	
	при загрузки через TWebBrowser даже одной страницы зависает интерфейс... Код: 
	for i:=0 to 1995+1 do
begin
webbrowser1.navigate('localhost');
Application.ProcessMessages;
if application.terminated then break; //если юзер закрыл прогу то остановляем цикл 
end;
![]()  | 
| 
		 
			 
			#4  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 А если так: 
		
	
		
		
		
		
			
		
		
		
		
	
		
		
	
	
	Код: 
	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  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Вот так то норм... 
		
	
		
		
		
		
		
	
		
		
	
	
	еще таймер ![]()  | 
| 
		 
			 
			#6  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 application.processmessages если добавить в таймер то это круто будет))) 
		
	
		
		
		
		
		
	
		
		
	
	
	круто придумали! и в таймере поставим интервал 1 и будет происходит application.processmessages каждые 1 миллисекунды и вообще не будет глючит форма ![]()  |