|
|
Регистрация | << Правила форума >> | 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
|
||||
|
||||
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
Этот пользователь сказал Спасибо 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
|
||||
|
||||
Цитата:
jmp $ ; Happy End! The Cake Is A Lie. |
#6
|
||||
|
||||
пример работы с потоком ннада?
shift+f11 Flash, Flash, Hundred Yard Dash! Buddy, it's nice to see you. |