|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
|  | 
|  | Опции темы | Поиск в этой теме | Опции просмотра | 
| 
			 
			#1  
			
			
			
			
		 | ||||
| 
 | ||||
|  Проблема с потоками в Делфи... Здравствуйте. Начал работать с потоками, разбираться что да как, появилась первая проблема. Поток запускается и работает нормально, но когда я пытаюсь остановить его Thread.Terminate; - ничего не выходит, процессор по прежнему грузится. В потоке у меня бесконечный цикл. Как его остановить? Код: type
   TMyThread1 = class(TThread)
   private
     { Private declarations }
   protected
     procedure DoWork;
     procedure Execute; override;
   end;
Var
  T1   : TMyThread1;
implementation
procedure TMyThread1.Execute;
begin
  while not Terminated do
    Synchronize(DoWork);
end;
procedure TMyThread1.DoWork;
begin
  while true do 
  begin
  
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
 begin
   {Если кнопка называется Stop...}
   if Button1.Caption = 'Stop' then begin
     T1.Terminate;
     {Изменяем название кнопки}
     Button1.Caption := 'Start';
     {Выходим из процедуры}
     Exit;
   end;
   T1 := TMyThread1.Create(False);
   T1.Priority := tpLowest;
   Button1.Caption := 'Stop';
 end; | 
| 
			 
			#2  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 | 
| Этот пользователь сказал Спасибо Bargest за это полезное сообщение: | ||
|  
Alloc (14.02.2016)
 | ||
| 
			 
			#3  
			
			
			
			
		 | ||||
| 
 | ||||
|   т.е. мне следовало просто вписать свой цикл в TMyThread1.Execute а TMyThread1.DoWork; удалить? | 
| 
			 
			#4  
			
			
			
			
		 | ||||
| 
 | ||||
|   Код: procedure TMyThread1.Execute;
begin
  while not Terminated 
  do begin
      Synchronize(DoWork);
      Sleep(50);
      end;
end;
 
procedure TMyThread1.DoWork;
begin
 //Что-то делаем в один проход
end; | 
| 
			 
			#5  
			
			
			
			
		 | ||||
| 
 | ||||
|   Цитата: 
 | 
| 
			 
			#6  
			
			
			
			
		 | ||||
| 
 | ||||
|   пример работы с потоком ннада?  shift+f11 |